问题背景

使用 Navigation 进行 Fragment 导航时,返回上一个 Fragment(如 fragmentA)会触发其视图重建,此时需要手动恢复数据状态。

大多数 View/ViewGroup 默认已处理状态保存与恢复(例如 CoordinatorLayout 只需指定 id 即可),RecyclerView 也具备类似机制。

动态 addView 的状态恢复

若页面中存在动态添加的 View(以 ViewPager 为例),需满足以下条件才能在重建时正确恢复状态:

恢复条件

  1. 必须在视图重建周期的 onViewCreated 阶段执行 addView,确保在系统恢复状态之前完成视图挂载。
  2. ViewPager 的 Adapter 需继承自 FragmentStateAdapter,使 Fragment 的状态管理交由框架处理。