【发布时间】:2011-12-23 08:54:49
【问题描述】:
我正在 Android 中测试 Fragment,但我在 Fragment 生命周期中遇到了一些令人困惑的行为。我有一个在横向和纵向模式下使用 xml 布局的活动。我有一些代码可以访问在片段布局之一中定义的 EditText 对象。如果我以横向模式启动应用程序,则一切正常。我在 onResume() 片段方法中访问组件来更新一些文本。
根据文档,当片段对用户可见时,会调用 onResume() 片段方法。但是,如果我旋转屏幕,即使此片段未在纵向布局中定义,也会再次调用此方法。对 onCreate 的调用会导致 NullPointerException,因为此方法引用了 EditText 对象。为什么在不属于新布局的片段上调用 onResume 方法?如何以及在哪里修改片段中的布局数据的正确位置。我尝试过 onStart、onResume、onActivityCreated 等,但似乎都返回相同的错误。
任何帮助将不胜感激。
【问题讨论】:
-
在不属于新布局的片段中是否也调用了 onCreateView()?如果是这样,那么您可以确定您每次都在某处实例化此片段。
标签: android lifecycle fragment