带有片段寻呼机适配器的嵌套片段

时间:2014-01-29 11:39:03

标签: android android-fragments

我对嵌套片段有一个非常令人沮丧的问题。我有一个看似简单直接的场景:

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片段中的资源。当然,这不会像现在看起来那么困难......

1 个答案:

答案 0 :(得分:3)

检查this问题我问了一会儿和接受的答案。我想这可能是同样的问题。