这是我遇到的问题。我有一个活动 A,它有一个片段 F,它包含在 FragmentPagerAdapter FPA 中,它在视图 V 中。(A->V->FPA->F)
当 A 被销毁(或者在这种情况下,被换出)时,F 被附加,并且在 FPA 中,它在 V 中。但是,当 A 被重新创建时(例如,有人将返回按钮返回到活动中),V并且 FPA 不存在,所以 F 被重新创建(处于附加状态!),但是对于不存在的东西,所以它根本不在视图层次结构中。然后,当 FPA 尝试在该片段上实例化State 时,它会尝试附加它,这什么也不做,因为它已经附加到稀薄的空气中。
显然有几种方法可以解决这个问题(例如,在活动的 onCreate 中存在 V 和 FPA,以便片段在创建时有去处),但我想继续懒惰地创建 FPA 和仅在需要时使用。
因此,似乎需要在 onDestroy() 中将 F 的状态更新为分离。但是,状态保存在 onPause() 中,这意味着我在这里有点不走运。
有没有办法在 A 的 onDestroy() 中更新 F 的保存状态?有没有办法说“如果活动被破坏,不要再水化这个片段”?还有其他一些我没有考虑的明显的思考方式吗?感觉就像我在这里做错了事情。