繁体   English   中英

活动和片段onCreate呼叫顺序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM