被替换的ViewPager和BackStack的生命周期



我真的搞砸了android ViewPager的生命周期,我开始认为在我的应用程序的结构有问题。所以我想确认,如果我能做到以下:

  • 我有一个应用程序显示一些标签。其中一个选项卡显示了一个ViewPager,其中有两个ListFragments。那些ListFragments是在viewpage的onCreate事件中创建的。
  • 当你点击ListFragments中的一个项目时,它将用不同的fragment(这是另一个listfragment)替换整个ViewPagerFragment。

下面是我用新的ListFragment

替换ViewPager的代码
FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.container, new RequestForm(requestsList.get(itemIndex)));
ft.addToBackStack(null);
ft.commit();

从那里,一切都很好。但是,如果用户单击后退按钮,则会出现以下情况:

  • ViewPager是重新加载良好(从onCreateView),但ListFragment里面不会出现。看起来我的ListFragment的对象仍然是活着,但似乎他们失去了他们的视图,和onCreateView不是调用来重新创建它(因为对象没有休眠)

我现在不会在这里发布更多的代码,因为我的目的是知道我正在尝试做的事情是否在Android的思维方式中是ok的。我是否需要对抗Android SDK来存档我想要做的事情?

嗯,正如你所看到的,我不是Android用户(我更了解iOS的UI)。这就是我困惑的原因。

在看了不同的应用程序后,我发现Gmail和Google Play确实有导航看起来有点像我的(用新的片段替换ViewPager,而不创建新的活动)。

对于我的问题,它不是一个结构问题。当你创建FragmentStatePagerAdapter时,一定要使用getChildFragmentManager()而不是getFragmentManager()!

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

最新更新