【发布时间】:2018-08-09 13:11:21
【问题描述】:
我在阅读片段文档时发现:
注意:如果您需要在 Fragment 中包含 Context 对象,您可以调用 getContext()。但是,请注意仅当片段附加到活动时才调用 getContext()。当片段尚未附加或在其生命周期结束时被分离时,getContext() 返回 null
所以我的问题是在片段中调用 getContext() 的最佳位置是什么。就像我可以在任何其他地方的 onCreateView、onCreate() 或 onAttach() 中调用它一样。
我之所以这么问,是因为最近我在片段中使用 getContext 导致空指针崩溃。所以我想我应该创建一个全局 Context 对象并在片段中访问它。但是后来我从官方文档中看到了这段文字,所以我有点困惑初始化这个 Context 对象的最佳位置是什么。
【问题讨论】:
-
保存全局上下文实例是错误。您可以通过检查
getContext()是否返回 null 来避免崩溃。如文档中所述,附加片段后上下文具有值。因此,在调用onAttach()之后。顺便说一句,不要将它存储在您的片段中,它可能会导致其他崩溃。 -
如果您的片段是活动类的一部分,那么您可以使用 getApplicationContext();但是,由于您的问题缺少代码示例,因此很难为您提供可行的解决方案。
-
@LucaNicoletti 那么如果上下文为空,如何处理该特定代码,例如我必须调用 Toast,那么我应该如何获取上下文
-
为什么这个问题被否决了?
-
@LucaNicoletti 我明白了,保存上下文是错误的,但是当大多数人提出错误的答案时,为什么这个问题会被否决。这不应该被赞成,这样我们大多数人就可以防止自己犯同样的错误吗?
标签: android