保证片段中没有null上下文的保证方法是什么?

时间:2019-01-27 12:15:40

标签: android android-fragments android-context

我看到了许多有关如何在BaseFragment中获取Context的示例,

protected lateinit var ctx: Context

override fun onAttach(context: Context?) {
    super.onAttach(context)
    ctx = context!!
}

然后我们可以在扩展BaseFragment的其他片段中使用上下文实例。 Onetwothree (it's offered to get Context from onViewCreated())等。 这似乎是解决方法。

在某些情况下,在Fragment中使用getActivity()或getContext()时也会发生“与活动分离的片段”异常。

那么,真正的方法是什么?

1 个答案:

答案 0 :(得分:1)

您不能保证上下文是100%非空的,这就是为什么将其标记为可为空(?)的原因,因此,如果活动分离,您提到的“解决方法”实际上会导致异常。 为避免出现这种情况,请不要标记ctx:Context as lateinit var使其可为空protected var ctx:Context? = null并在每次使用时检查其状态。