[英]Activity and Fragment onCreate call order
我在Activity
使用了一個Fragment
。 Fragment
有一個OnInitListener
接口,以便將數據傳遞給宿主Activity
,該宿主在其onCreate()
方法內部被調用。 問題是,有時(通常是在屏幕被鎖定和解鎖時),我從在Activity#onCreate
上初始化的對象中獲得了NullPointerException
,這是代碼:
// Activity
public void onCreate() {
super.onCreate();
// ...some code...
myObject = new MyObject();
}
@Override
public void onInit(ObjectProperty property) {
myObject.setProperty(property); // Here I get NullPointerException
}
// Fragment
public void onCreate() {
// ... some code ...
property = new ObjectProperty();
listener.onInit(property);
}
@Override
public void onAttach(Activity activity) {
listener = (OnInitListener) activity; // This part is actually surrounded by try/catch, so don't worry about it
}
總之, Fragment
應該初始化一個對象並將其傳遞給偵聽器,以便Activity
可以將其設置為另一個對象。
我猜問題是在Activity#onCreate()
之前調用了Fragment#onCreate
,這就是為什么我得到NPE
的原因,但我可能錯了。 有任何想法嗎?
我對onCreate()
並不了解,但是我認為片段onCreate()
永遠會在活動的onCreate()
。 如果我制作片段,則始終使用onActivityCreated()
。 創建活動后將調用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.