Android Fragments 在方向改变时重新创建

标签 android android-fragments android-orientation

我正在开发一个基本上具有 ActionBar 的应用程序。当我的应用程序启动时,Activity 会创建 fragment 并将它们附加到每个选项卡,因此当我切换时我会得到不同的 View 。

当我尝试旋转设备时出现问题。经过一番努力,我注意到 Android 会自动重新创建以前添加的 fragment ,如下所示:

SummaryFragment.onCreate(Bundle) line: 79   
FragmentManagerImpl.moveToState(Fragment, int, int, int) line: 795  
FragmentManagerImpl.moveToState(int, int, int, boolean) line: 1032  
FragmentManagerImpl.moveToState(int, boolean) line: 1014    
FragmentManagerImpl.dispatchCreate() line: 1761 
DashboardActivity(Activity).onCreate(Bundle) line: 864  
...

然后我像往常一样重新创建 fragment 。因此,我拥有我希望能够正常工作的“真实” fragment ,以及它们让我的应用程序崩溃的“隐藏”Android 创建的对应部分。我怎样才能避免这种行为?我已经尝试在 SummaryFragment 中调用 setRetainInstance(false)。

谢谢

最佳答案

您需要检查 savedInstanceState [编辑:在您的父 Activity 中],如果它存在,请不要创建您的 fragment 。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if (savedInstanceState == null) {
         // Do your oncreate stuff because there is no bundle   
    }
// Do stuff that needs to be done even if there is a saved instance, or do nothing
}

关于Android Fragments 在方向改变时重新创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10634854/

相关文章:

java - 使用 XML for Fragments 有什么意义?

android - 如何在 fragment Android Kotlin之间共享数据/对象

android - 调用 `setRequestedOrientation`后查找设备方向变化的方法

android - 对于使用人像相机应用程序 android 拍摄的图像,EXIF 方向标记值始终为 0

android - 从 phonegap android 应用程序调用本地 .asmx web 服务以获取数据?

java - 创建 ImageButton 时出现 NullPointerException

android - 如何获取首选项 Activity 中的当前 fragment ?

android - 让用户改变默认方向

android - React-Native Talkback 以错误的语言读取组件的可访问性角色

Android:由于无法解析符号,gradle 构建停止