您的位置:首页 > 移动开发 > Android开发

Android 解决 Fragment 懒加载并嵌套使用时子 Fragment 的 View 不填充

2018-01-18 14:29 405 查看
在前文 Android ViewPager 中 Fragment 懒加载 中介绍了 Fragment 懒加载的实现,在后期项目运用中对 Fragment 中 View 的加载也实现了在首次展示时才进行填充,结果遇到了如下一个问题:

当 Fragment 被销毁重建时,其中嵌套的 Fragment 界面没有被展示,但是
isAdd()
结果为 true。

研究后发现,在 Fragment 中嵌套使用 Fragment 时,当父 Fragment 被销毁时,子 Fragment 不会被销毁。

我们平时加载 Fragment 时会通过
findFragmentByTag
进行复用,这便导致父 Fragment 重建时会根据保存的子 Fragment 的 TAG 去直接加载子 Fragment,而不是重建一个子 Fragment。此时子 Fragment 由于懒加载机制,它的 View 不会再次被填充到父 Fragment 中。也就是在重建后的父 Fragment 中,子 Fragment 会被 onAttach,但它的 View 不会被 add。

解决办法:在父 Fragment 的 savedInstanceState 中移除保存的子 Fragment 的 TAG 信息。

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
if (savedInstanceState != null) {
/**
* key 参考 {@link FragmentActivity.FRAGMENTS_TAG}
*/
savedInstanceState.remove("android:support:fragments");
}
super.onCreate(savedInstanceState);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐