我尝试在一个Activity中使用3个片段,其中一个片段被设置为onCreate()方法中的默认片段,其他片段通过某个操作进行调用,因此,当我旋转屏幕时,再次调用onCreate()方法,当前片段丢失,默认片段重新启动,但我必须使用onCreate()方法中的默认片段。我怎样才能保持我的运行片段在旋转屏幕上。
onCreate()
ibps3vxo1#
您可以在onCreate方法中使用setRetainInstance(true)。要在运行时配置更改期间将有状态对象保留在片段中,请执行以下操作:扩展Fragment类并声明对有状态对象的引用。创建片段时调用setRetainInstance(布尔值)。将片段添加到您的Activity。使用FragmentManager在Activity重新启动时检索片段。有关如何处理配置更改的信息,请参阅文档,其中有一个片段部分
setRetainInstance(true)
fquxozlt2#
我在使用BottomNavigationView时遇到了同样的问题。通过在加载默认片段之前检查savedInstanceState是否为null来解决此问题。
if(savedInstanceState==null) { //This is the function you call onCreate to load your Fragments loadFragments(new MyDefaultFragment()); }
7lrncoxx3#
您可以在活动清单上添加android:configChanges="screenSize|orientation",示例如下:
android:configChanges="screenSize|orientation"
<activity android:name=".MyActivity" android:configChanges="screenSize|orientation" android:label="@string/app_name">
3条答案
按热度按时间ibps3vxo1#
您可以在onCreate方法中使用
setRetainInstance(true)
。要在运行时配置更改期间将有状态对象保留在片段中,请执行以下操作:
扩展Fragment类并声明对有状态对象的引用。
创建片段时调用setRetainInstance(布尔值)。
将片段添加到您的Activity。
使用FragmentManager在Activity重新启动时检索片段。
有关如何处理配置更改的信息,请参阅文档,其中有一个片段部分
fquxozlt2#
我在使用BottomNavigationView时遇到了同样的问题。通过在加载默认片段之前检查savedInstanceState是否为null来解决此问题。
7lrncoxx3#
您可以在活动清单上添加
android:configChanges="screenSize|orientation"
,示例如下: