android - 当 Activity 在后台终止时保留 Fragments

标签 android android-fragments

在我的应用程序中,我有一个 Activity 。该 Activity 有 5 个 fragment 。每个 Fragment 占据整个窗口,并且在任何时候只会显示其中一个。

从第五个 fragment 开始我打开相机拍照。由于我打开相机,在某些手机中,Activity 被杀死并重新创建。

拍摄照片后,将结果提供给新创建的 Activity。但由于这是一个新创建的 fragment ,因此显示的是第一个 fragment 而不是第五个 fragment 。

如何显示第五个 Fragment 并保持其状态? setRetainInstance 仅在 Activity 在配置更改时重新创建时才有用。

主要问题是,在重新创建 Activity 时,这些 fragment 的默认构造函数被调用并导致所有 fragment 的重复实例。

最佳答案

尝试在 onSaveInstanceState() 中保存您的 fragment 状态,并在 onCreate 中使用它来恢复状态。

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    getSupportFragmentManager().putFragment(outState, "fragment", currentFragment);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState == null) {
        // Load saved fragment or values you want
        currentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "fragment");
    } else {
        // your code to initialize all the fragments (App Launch case)
    }
}

这仍将保持状态并将回调 onActivityResult。

关于android - 当 Activity 在后台终止时保留 Fragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26383443/

相关文章:

android - Dagger 2 混合瞄准镜

android - 根据进度取消图像请求 Android - Image loader Volley , Picasso

java - 如何解决这个需求,Android条件序列化名称

android - 如何使用 Eclipse Paho MQTT 客户端发送 ping?

android - ViewPagerFragment 选项卡错误

android - 键盘打开android时布局正在缩小

带有文本+图像的Android自定义GridLayout

java - FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, WeatherFragment)

android - 当我从对话框 fragment 返回并且编​​辑文本获得焦点时,不会调用 onBackPressed

android - ViewPager 中的嵌套 fragment 的高度和宽度为零