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