我有一个带有NavigationDrawer和Fragment的Activity,当我点击NavigationDrawer时会创建它。当我创建片段时,我会传递一些参数。 当我旋转屏幕时,将重新创建活动,重新创建导航器以及片段。 执行此操作后,将重新创建片段,但不带参数。 我想了解谁是第二次创造片段...... 任何人都可以帮助我吗?
答案 0 :(得分:1)
在更改屏幕方向后尝试恢复视频播放器的状态(播放或暂停)和位置(经过的时间)时,我遇到了类似的问题。旋转屏幕一次时,我注意到片段活动中的onCreateView被调用了两次。旋转两次后,onCreateView会被调用三次-依此类推。最后一个调用以某种方式忘记了我保存在onSaveInstanceState中的状态(在片段活动中)。
在四处寻找时,我找到了想要的答案。在添加片段的活动中,我需要检查saveInstanceState是否为null。仅当它为null时,才应添加片段。
例如:
if (savedInstanceState == null) {
fragmentManager = getSupportFragmentManager();
FragmentActivity fragment = new FragmentActivity();
fragmentManager.beginTransaction()
.add(R.id.fragment_container, fragment)
.commit();
}
更多信息可以在这里找到: Android Fragment lifecycle over orientation changes
答案 1 :(得分:0)
在带有Fragment活动的清单中使用此功能:
android:configChanges="orientation|keyboardHidden|screenSize"
但是,如果您的应用程序的目标是API级别12或更低,那么您的活动始终会自行处理此配置更改(即使在Android 3.2或更高版本的设备上运行,此配置更改也不会重新启动您的活动)