Android Fragment 重建时动态视图的状态恢复
问题背景
使用 Navigation 进行 Fragment 导航时,返回上一个 Fragment(如 fragmentA)会触发其视图重建,此时需要手动恢复数据状态。
大多数 View/ViewGroup 默认已处理状态保存与恢复(例如 CoordinatorLayout 只需指定 id 即可),RecyclerView 也具备类似机制。
动态 addView 的状态恢复
若页面中存在动态添加的 View(以 ViewPager 为例),需满足以下条件才能在重建时正确恢复状态:
恢复条件
- 必须在视图重建周期的
onViewCreated阶段执行addView,确保在系统恢复状态之前完成视图挂载。 - ViewPager 的 Adapter 需继承自
FragmentStateAdapter,使 Fragment 的状态管理交由框架处理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 crowforkotlin!
评论



