活动和片段onCreate调用顺序



我在Activity内使用FragmentFragment有一个OnInitListener接口,为了将数据传递给主机Activity,它在onCreate()方法中被调用。问题是,有时(通常是当屏幕被锁定和解锁时),我从一个对象中得到一个NullPointerException,它是在Activity#onCreate上初始化的。

// 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#onCreateActivity#onCreate()之前被调用,这就是为什么我得到NPE,但我可能错了。什么好主意吗?

我不知道它的onCreate(),但我认为片段onCreate()将永远是后来的活动的onCreate()。如果我做一个片段,我总是使用onActivityCreated()

相关内容

  • 没有找到相关文章

最新更新