【问题标题】:How to retain Fragments of the View Pager on Screen Rotation?如何在屏幕旋转时保留 View Pager 的片段?
【发布时间】:2014-11-09 09:10:03
【问题描述】:

我有一个 Activity(扩展 FragmentActivity)。在 Activity 的 onCreate 中我动态创建 Fragment。在 Fragment 的 onCreate 中我设置了 setRetainInstance(true)。我还调用 AsyncTask.execute() 从外部服务器加载一些列表。 AsyncTask 的 onPostExecute() 我称之为 -

mAdapter = new MyAdapter(getChildFragmentManager());
mPager.setAdapter(mAdapter);

ViewPager 中的项目数量是以这种方式创建的——我将整个列表划分为每个 10 个项目的小列表,并制作这些列表的列表片段并分配给寻呼机。

现在,当我旋转屏幕时,我的设备没有崩溃,只是屏幕完全变白。我记录了日志,发现旋转屏幕后没有调用 getItem() 和 getcount()。我正在使用 FragmentStatePagerAdapter。

我在SO上寻找解决方案,但找不到合适的解决方案。旋转屏幕后如何保留viewpager片段?

【问题讨论】:

  • 在重新实例化Activity 后,您需要在ViewPager 上设置适配器类的实例。
  • 我在 Fragment 的 onActivityCreated 方法中执行此操作,但屏幕旋转应用程序崩溃
  • 哦,所以你的ViewPager 在你保留的Fragment 里面?这可能会产生一些影响。无论如何,发布您的崩溃日志可能会对此事有所帮助。
  • @corsair992 - 我在 android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:579) 遇到空指针异常
  • @corsair992 - 我按照你的要求在 viewpager 上设置了一个适配器类的实例,但我得到了 Null Pointer 异常。

标签: android android-fragments android-viewpager


【解决方案1】:

把它放到你的片段类中

setRetainInstance(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多