我看到了许多有关如何在BaseFragment中获取Context的示例,
protected lateinit var ctx: Context
override fun onAttach(context: Context?) {
super.onAttach(context)
ctx = context!!
}
然后我们可以在扩展BaseFragment的其他片段中使用上下文实例。 One,two,three (it's offered to get Context from onViewCreated())等。 这似乎是解决方法。
在某些情况下,在Fragment中使用getActivity()或getContext()时也会发生“与活动分离的片段”异常。
那么,真正的方法是什么?
答案 0 :(得分:1)
您不能保证上下文是100%非空的,这就是为什么将其标记为可为空(?)的原因,因此,如果活动分离,您提到的“解决方法”实际上会导致异常。
为避免出现这种情况,请不要标记ctx:Context as lateinit var
使其可为空protected var ctx:Context? = null
并在每次使用时检查其状态。