Android在Fragment嵌套ViewPager显示空白的解决办法

CodeingBoy 10月 26, 2017


症状

我写了一个 Activity,使用 Fragment 来显示不同的页面(显示哪个页面的时候直接 replace 即可),某个页面的 Fragment 下又通过 ViewPager 嵌套了多个 Fragment。

页面的结构大体如下:
Fragment
    ViewPager
         Fragments…

问题来了,第一次进入这个页面的时候没有问题。第二次进入的时候发现这个页面 ViewPager 嵌套的 Fragment 内容显示不出来了。

解决办法

首先,要将 ViewPager 的 Adapter 构造函数中的 FragmentManager 换为 getChildFragmentManager()。

试着运行一下,如果可以的话就万事大吉。但是我运行的时候抛出了异常:

那么需要到 Adapter 中重写 restoreState 方法为空:

这样问题就解决了

参考资料

https://stackoverflow.com/questions/25027931/viewpager-of-fragment-does-not-show-its-content-when-the-root-fragment-is-replac
https://stackoverflow.com/questions/41967318/fragment-viewpager-nullpointer-issue

本文采用 CC BY-NC-SA 3.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://blog.codeingboy.me/android%e5%9c%a8fragment%e5%b5%8c%e5%a5%97viewpager%e6%98%be%e7%a4%ba%e7%a9%ba%e7%99%bd%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/

发表评论

电子邮件地址不会被公开。 必填项已用*标注