【发布时间】:2021-04-27 23:44:30
【问题描述】:
查看 Fragment 生命周期(例如 here),Activity 似乎在发出任何其他回调之前已附加到 Fragment(这是由 onAttach() 方法通知的)。
在我的应用程序中,它由单个 Activity 组成,第一个 Fragment 是从 Activity 的 onCreate() 方法打开的(实际上它是在 onCreate() 中完成的最后一件事)。
目前,我正在 onCreateView() 回调中初始化我的所有图形元素,包括需要构造 Activity 的某些对象(如 ArrayAdapter)的实例化,这是通过调用 getActivity() 获得的。我假设此时 Activity 保证存在,因为 onAttach() 方法已被调用。
我注意到IntelliJ警告我getActivity()返回null的可能性,可能只是因为方法被注释为@Nullable,所以我开始在网上搜索如果我的假设是真的,现在我困惑:在onCreateView() 中调用getActivity() 真的安全吗?为什么会有一个名为onActivityCreated() 的方法(我知道它现在已被弃用,但它确实有用,但它不是)?
不幸的是,文档无助于理解这一点。
【问题讨论】:
-
你可以在 onCreateView() 中调用它,但是为了最佳实践,它需要检查 getActivity() 是否为空,因为 android 不知道你什么时候会分离片段,所以它会显示警告以防止它崩溃。
-
是的.. 但最好使用
requireActivity()来保证空值安全 -
@NehaK 实际上可以在调用 onCreateView 之前分离 Fragment 吗?
标签: android android-activity fragment