首页 文章

片段onCreateView是否需要考虑还原?

提问于
浏览
0

这实际上是关于生命周期的两个问题 .

1)在Fragment.onCreateView(LayoutInflater,ViewGroup容器,Bundle)中,我看到的所有示例都只是使用LayoutInflater来扩展View,然后返回它 . 如果这是Restore的一部分,即非null Bundle,那么系统不应该处理视图层次结构的恢复吗?我是应该调用container.findViewById()还是尝试将视图拉出Bundle或其他东西(为了拉出对子视图的引用)?

2)通常,任何Fragment生命周期回调都需要担心保存/恢复其视图层次结构的状态,甚至可以通过调用super.onXXX()隐式地进行调用吗?或者当它调用super.onCreate(Bundle)时,所有处理都由拥有的Activity处理?

1 回答

  • 1
    • 虽然框架负责重新创建 Fragment 本身,但必须手动重新创建视图层次结构 . 视图无法在他们的 Activity 的破坏中存活下来(加上,因为 onCreateView() 有你的实现,你可以有条件地膨胀另一个布局或做不同的事情 - 这就是为什么它必须每次都运行) . Bundle包含由 onSaveInstanceState() 放置的信息,但旧视图不是它的一部分 .

    • 如果视图ID在旧布局和新布局之间匹配,则应自动恢复状态(通过超级调用) . 视图会覆盖自己的 onSaveInstanceState() . 如果您在 fragment's onSaveInstanceState() 中保存自定义状态,那么您还要负责恢复它 .

相关问题