在我的应用程序中,我有一个 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/