我对嵌套片段有一个非常令人沮丧的问题。我有一个看似简单直接的场景:
MainActivity
ContentFrame
MainFragment
ViewPager (with FragmentStatePagerAdapter)
FragmentA
FragmentB
FragmentC
...
注意:我没有从寻呼机适配器外部保留对片段的引用。我在寻呼机适配器的getItem方法中实例化片段。
案例1
我遇到的问题是视图寻呼机片段没有收到任何状态更改。当我在MainActivity中交换片段时,在MainFragment上调用onPause和onResume。但是,不会在视图分页器片段上调用onPause和onResume。
当我切换回MainFragment时,会调用onCreateView,创建一个新的ViewPager适配器,但是正如预期的那样,嵌套的片段不会被重新实现,因为它们被标记并且可以重用。但是,由于onPause和onResume从未被调用,因此我的状态变得混乱。
案例2
此外,ViewPager片段似乎永远不会被破坏。如果我在使用以下方法交换到不同的外部片段时显式删除MainFragment:
fm.beginTransaction().remove(mainFragment).commit();
以后再重新实例化MainFragment。即便如此,ViewPager片段似乎永远不会被清理干净。现在,MainFragment最终会实例化新的ViewPager片段,最终我会得到许多永远不会被破坏的ViewPager片段。
底线
基本上我只是希望能够在MainFragment变为活动/非活动状态时获取和释放ViewPager片段中的资源。当然,这不会像现在看起来那么困难......