我有片段方向更改的小问题,我有一个DrawerActivity开始加载ProfileFragment里面,在左侧导航栏中点击按钮如果点击按钮在同一个容器中加载ReviewFrament。现在在ReviewFragement中,如果更改方向显示ProfileFrament(返回页面),则刷新总页面。
如何避免app的不当行为?
答案 0 :(得分:1)
最后使用放置标志来检查基于该加载视图的片段状态。
尝试使用清单中的配置更改但不更改布局视图(如果我们想根据方向更改设计)。
答案 1 :(得分:0)
只需将此行添加到DrawerActivity
文件
manifest
即可
android:configChanges="orientation|screenSize"
因此,您的活动代码将如下所示。
<activity
android:name="packagename.DrawerActivity"
android:configChanges="orientation|screenSize"
android:label="@string/app_name" >
</activity>
快乐编码。
答案 2 :(得分:0)
它的发生是因为你的活动在轮换后重新创建,所以片段被破坏了。
我建议最好处理这种情况是将活动用作片段的父级,就像容器一样,在活动中放置任何布局并使用片段执行所有其他操作。
例如在您的情况下,主要活动应该只包含像这样的容器
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
然后使用您的活动的onCreate启动的个人资料ProfileFragment
// this will prevent the fragments from recreating on rotate
if (savedInstanceState == null){
setSplashFragment();
} else {
//Do Nothing
}
并在你的清单中
<activity
android:name=".ParentActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
并使用界面告诉活动按钮点击等启动ReviewFragement
。
这一切可能听起来很复杂,您可能正在寻找快速解决方案,但这是您可以用来避免未来冲突的最佳方法。