的生命周期更换ViewPager和堆栈中?(Lifecycle of a replaced View

2019-07-21 10:37发布

我真的搞砸了Android ViewPager的生命周期,而我开始觉得有什么错我的应用程序的结构。 所以,我想确认我是否能做到以下几点:

  • 我有一个展示一些标签的应用程序。 其中的一个标签的是呈现出ViewPager,其中在两个ListFragments。 这些ListFragments都在ViewPager的OnCreate事件创建。
  • 当您在ListFragments之一单击一个项目,它是由不同的片段替换整个ViewPagerFragment(这是另一个ListFrament)。

下面是我用新的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不叫重新创建它(因为对象没有睡觉,而ViewPager出去)。

我不是在这里,现在张贴更多的代码,因为我的目的是要知道,如果我想要做的是确定或没有思想的一个Android的方式。 我将不得不对Android的SDK争取存档我想干什么?

Answer 1:

好了,你可以看到,我不是一个Android用户(我知道更多关于UI在iOS)。 这就是为什么我很迷惑。

寻找一个不同的应用程序后,我发现,Gmail和谷歌播放不具有导航,看起来像我的一点点(用新片段替换ViewPager,而无需创建一个新的活动)。

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

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());


文章来源: Lifecycle of a replaced ViewPager and BackStack?