活动和片段onCreate呼叫订单

时间:2014-05-19 11:47:14

标签: android android-fragments android-activity

我在Fragment内使用ActivityFragment具有OnInitListener接口,以便将数据传递给主机Activity,该主机在其onCreate()方法中调用。问题是有时候(通常在屏幕被锁定和解锁时)我从一个对象获得一个NullPointerException,它是Activity#onCreate上的代码:&#39}代码:

// 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可以将其设置为另一个对象。

我猜测问题是在Fragment#onCreate之前调用了Activity#onCreate(),这就是为什么我会NPE,但我可能出错了。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不了解onCreate(),但我认为片段onCreate()将始终是活动的onCreate()。如果我制作片段,我总是使用onActivityCreated()。在创建活动后调用此方法。