这是我遇到的问题。我有一个 Activity A,它有一个 fragment F,它包含在 View V 中的 FragmentPagerAdapter FPA 中。 (A->V->FPA->F)
当 A 被销毁(或者在这种情况下,换出)时,F 被附加,并且在 FPA 中,而 FPA 在 V 中。但是,当 A 被重新创建时(例如,有人点击后退按钮回到 Activity 中), V 和 FPA 不存在,所以 F 被重新创建(在附加状态!),但是对于不存在的东西,所以它根本不在 View 层次结构中。然后,当 FPA 尝试在这个 fragment 上实例化状态时,它会尝试附加它,这什么都不做,因为它已经附加到稀薄的空气中。
显然有几种方法可以解决此问题(例如,在 Activity 的 onCreate 中存在 V 和 FPA,以便 fragment 在创建时有地方可去),但我想继续懒惰仅在需要时创建 FPA 和 V。
因此,在 onDestroy() 中将 F 的状态更新为 detached 似乎是可取的。但是,状态保存在 onPause() 中,这意味着我有点不走运。
有没有办法在A的onDestroy()中更新F的保存状态?有没有办法说“如果 Activity 被破坏,不要再水化这个 fragment ”?有没有其他一些我没有考虑的明显的思考方式?感觉我在这里做事的方式是错误的。
最佳答案
我在使用 FragmentPagers
时遇到了麻烦。我所做的是在 Activity onCreate()
中传递一个空包,然后在每次创建时从头开始创建所有内容。像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
// do my stuff
}
这样,当重新创建 Activity 时, fragment 就不会被传递。
关于android - 你能在 onDestroy() 中分离一个 fragment 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639214/