我创建了一个Activity,其中一个片段处于纵向模式,两个片段处于横向模式。当在肖像模式,如果我检查
FragmentManager fm = getSupportFragmentManager();
Fragment tt=fm.findFragmentById(R.id.one);
由于www.example,它返回了预期的null www.example.com 。但是当我将移动的切换到横向时,它会像预期的那样显示片段,我可以在片段的视图上工作。然而,如果我从风景切换回肖像,它仍然找到片段一,但无法与其意见。请更新为什么它显示碎片一,当我们回来从风景到肖像和如何处理它。
1条答案
按热度按时间ggazkfy81#
根据所提供的信息,您遇到的问题可能与片段的生命周期以及如何将其添加到Activity有关。
当您从纵向模式切换到横向模式时,会重新创建Activity,FragmentManager会将两个Fragments添加到Activity中。当您切换回纵向模式时,将再次重新创建Activity,并且FragmentManager尝试将两个Fragments添加到Activity中。然而,由于只有一个片段打算在纵向模式下显示,因此FragmentManager添加第一个片段并忽略第二个片段。
要正确处理Activity中Fragments的生命周期,您应该创建两个单独的布局文件-一个用于纵向模式,一个用于横向模式-并将相应的Fragment添加到每个布局中。这样,当Activity被重新创建时,FragmentManager将仅向Activity添加相关的Fragment。下面是一个示例,说明您可以如何实现这一点:
创建两个布局文件:一个用于肖像模式(例如,g. activity_main。XML)和一个用于横向模式(例如,g. activity_main_land。xml). activity_main.联系我们
活动_主要_土地。联系我们
在Activity的onCreate()方法中,根据设备的方向展开适当的布局,并将片段添加到Activity: www.example.com
使用这种方法,当您从纵向模式切换到横向模式时,FragmentManager会将两个Fragment添加到Activity,而当您切换回纵向模式时,FragmentManager只会将相关Fragment添加到Activity。此外,由于Fragment是直接添加到布局中的,因此您可以使用findViewById()而不是依赖于FragmentManager来访问其视图。