gpt4 book ai didi

android - 被替换的 ViewPager 和 BackStack 的生命周期?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:09:00 25 4
gpt4 key购买 nike

我真的搞砸了 android ViewPager 的生命周期,我开始认为我的应用程序的结构有问题。因此,如果我可以执行以下操作,我想确认一下:

  • 我有一个显示一些选项卡的应用程序。其中一个选项卡显示一个 ViewPager,其中有两个 ListFragment。那些ListFragments在 ViewPager 的 onCreate 事件中创建。
  • 当您单击其中一个 ListFragment 中的项目时,它会将整个 ViewPagerFragment 替换为另一个 fragment (这是另一个 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 才能存档我想做的事情?

最佳答案

好吧,如您所见,我不是 Android 用户(我对 iOS 上的 UI 了解更多)。这就是我感到困惑的原因。

在查看不同的应用程序后,我发现 Gmail 和 Google Play 的导航确实有点像我的导航(用新 fragment 替换 ViewPager,没有创建新 Activity )。

对于我的问题,这不是结构问题。创建 FragmentStatePagerAdapter 时,请务必使用 getChildFragmentManager() 而不是 getFragmentManager()!

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

关于android - 被替换的 ViewPager 和 BackStack 的生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com