Android Fragments 如何在屏幕旋转时保持当前片段

nwnhqdif  于 2022-11-24  发布在  Android
关注(0)|答案(3)|浏览(145)

我尝试在一个Activity中使用3个片段,其中一个片段被设置为onCreate()方法中的默认片段,其他片段通过某个操作进行调用,因此,当我旋转屏幕时,再次调用onCreate()方法,当前片段丢失,默认片段重新启动,但我必须使用onCreate()方法中的默认片段。我怎样才能保持我的运行片段在旋转屏幕上。

ibps3vxo

ibps3vxo1#

您可以在onCreate方法中使用setRetainInstance(true)
要在运行时配置更改期间将有状态对象保留在片段中,请执行以下操作:
扩展Fragment类并声明对有状态对象的引用。
创建片段时调用setRetainInstance(布尔值)。
将片段添加到您的Activity。
使用FragmentManager在Activity重新启动时检索片段。
有关如何处理配置更改的信息,请参阅文档,其中有一个片段部分

fquxozlt

fquxozlt2#

我在使用BottomNavigationView时遇到了同样的问题。通过在加载默认片段之前检查savedInstanceState是否为null来解决此问题。

if(savedInstanceState==null) {
   //This is the function you call onCreate to load your Fragments
   loadFragments(new MyDefaultFragment());
}
7lrncoxx

7lrncoxx3#

您可以在活动清单上添加android:configChanges="screenSize|orientation",示例如下:

<activity android:name=".MyActivity"
      android:configChanges="screenSize|orientation"
      android:label="@string/app_name">

相关问题