android - 旋转时保留 Fragment 对象

标签 android android-fragments android-3.0-honeycomb screen-rotation

我在 Honeycomb 中开发了一个应用程序,我正在使用 fragment 。
这是我的应用程序

  • 我有一个 Activity(比如 A1),其中有一个 fragment
  • 最初这个 fragment 持有对象一个 fragment 对象说(F1)
  • 然后根据用户操作,它可能会更改为其他对象 F2、F3 ....

我的问题是什么

当用户旋转设备时,Activity 被重新创建,这使得 F1 成为 fragment 对象,即使在旋转之前它不是
在旋转的同时保留fragment对象的方法是什么?
我使用了 setRetainInstance(true); 但它对我不起作用
我已经在我的 onCreate 函数中通过代码添加了 fragment ,就像这样

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

   FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();

   Fragment homeFragment = new Home();
   fragmentTransaction.add(R.id.mainFragement, homeFragment);
   fragmentTransaction.commit();
}

最佳答案

默认情况下,Android 会保留 fragment 对象。在您的代码中,您在 onCreate 函数中设置 homeFragment。这就是为什么在 onCreate 中设置的总是一些 homeFragmentfl

因为每当您旋转时,onCreate 都会执行并将您的 fragment 对象设置为第一个

所以对你来说最简单的解决方案是检查 savedInstanceState 包是否为空并设置 fragment 对象

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(null == savedInstanceState) {
        // set you initial fragment object 
    }
 }

关于android - 旋转时保留 Fragment 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5164126/

相关文章:

java - 将字符串从 EditText 转换为整数会导致应用程序在启动前停止工作

android - 主题不适用于 Fragment

android - 如何关闭 Android >= 3.0 中带有附加按钮的自定义丰富通知中的通知下拉列表?

java - 如何在Libgdx游戏上添加插页式广告?

android - Dagger 2 错误子组件可能未引用作用域绑定(bind)

java - RecylerView 项目未显示

android - 在不重新实例化接收 fragment 的情况下在 fragment 之间传递数据

android - 如何在不同的 fragment 中制作不同的菜单选项?

android - 如何使用 NativeActivity 写入内部存储文件系统?

android - 是否可以在 Galaxy Tab 中安装 Eclipse IDE?