在我的Activity中,我有一个名为lateinit
的{{1}}属性,我的Fragment使用它。
此属性在controller
中初始化。我的Activity.onCreate()
通过Fragment
将其引用回到我的Activity
。 onAttach()
然后在Fragment
中调用myActivity.controller
。
通常情况Fragment.onCreate()
首先在controller
初始化,然后添加Activity.onCreate()
。所以这很好用。
但是当我的Fragment
被杀死时,它会尝试重新创建自己及其碎片。这会导致在Activity
初始化之前将Fragment.onCreate()
称为。
这些是我现在看到的选项:
Activity.onCreate()
之前初始化controller
(如果可能的话)super.onCreate()
的呼叫转移到以后的生命周期回调,myActivity.controller
onViewCreated()
的内容这里我最好的选择是什么?
答案 0 :(得分:5)
通过审核Fragment
lifecycle,事实上最安全的做法是#onActivityCreated(android.os.Bundle)
。
即使#onAttach()
在Fragment
附加到Activity
时调用LinkedList
,我也不确定这是否完全有保障,因为旧FibonacciLinkedList
不推荐使用3}},建议使用新的#onAttach(android.app.Activity)
。
答案 1 :(得分:0)
处理在初始化之前使用对象的场景的最佳方法是使用isInitialized()属性进行检查,然后使用它。