当前位置: 首页 > 知识库问答 >
问题:

防止片段在ViewPager中调用onPause

贲招
2023-03-14

我有一个有3个选项卡的ViewPager。根据我所看到的情况,当容器活动开始时,前两个片段将处于恢复状态。我还注意到,只有并排的两个片段被恢复,第三个被停止。我遇到的问题是,我从网络加载数据用于第一个片段,并将自定义对象存储在一个ArrayList中,这很正常,但当我导航到第三个片段时,数据会随着第一个片段进入停止状态而丢失。因此,当从第三个片段导航回第一个片段时,ArrayList就会为空(我在onCreate中启动一个AsyncTask来检索和填充ArrayList)。

我想要的是一种简单的方法来维护ArrayList成员变量,在ViewPager中的所有3个片段之间进行导航。OnSaveInstanceState与我的对象扩展Parcelable在这种情况下将不起作用,因为它从未被调用。此外,对数据库或自定义SharedPreference的写入和读取似乎有些矫枉过正,并且在片段之间滑动时引入了不必要的延迟。有没有一种简单的方法可以实现这一点?

共有1个答案

边霄
2023-03-14

使用FragmentPagerAdapter,您可以在ViewPager的onCreate(Bundle savedInstanceState)方法中添加以下内容,如下所示:

ViewPager mViewPager = (ViewPager) findViewById(R.id.myViewPager);
mViewPager.setOffScreenPageLimit(2);

这会让你的碎片保持完整。祝你好运.

 类似资料:
  • 有没有什么好的方法来引用用创建的片段?或者我应该如何从我的活动(准确地说是从选项菜单)中刷新查看页中的片段?

  • 我有一个对象Foo,它可以使用片段(efFraank)进行配置。Foo类包含对FooFraank的静态引用和方法public Fraank getConfigurationFraank();此方法将当前对象分配给FooFraank并返回它。 足球碎片大致如下: 当我第一次在对象foo1上使用片段时,一切都很好。显示正确的信息,一切正常。 当我在另一个对象foo2上第二次使用该片段时,打开该片段会导

  • 嗨,我在主片段内使用带有碎片网的viewPager。我试图从画廊或相机中获取图像到位图,但在选择照片并启动ActivityForResult后,它不会在onActivityResult中捕获... 以下是我如何调用startActivityForResult: 这是我的onActivityResult: 有什么想法吗?

  • 我正在使用开发一个应用程序。 这是我的活动: 我使用的FragmentStatePagerAdapter如下所示: }

  • 我有一个有4个选项卡的ViewPager片段,在第4个选项卡中有另一个有3个选项卡的ViewPager,这样,如果每当我切换我的topviewPagerTab(一个有4个选项卡)时,就不会调用sub ViewPager(有3个选项卡)中的setUserVisiblehint片段。

  • 如何限制我的主要活动不返回片段的最后一页,一旦从片段的最后一页返回到主要活动,就像我有一个主活动一样,单击按钮,该主活动会导致另外3个活动,其中一个活动有片段。片段的最后一页指向home activity,但当我在home activity上后退时,它再次将我引导到片段的最后一页,然后我再次按下back按钮,然后我的应用程序关闭 我的主要活动课 公共类主页扩展应用程序活动{ } 我零星的寻呼机 公