我在Fragment
内使用Activity
。 Fragment
具有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
,但我可能出错了。有什么想法吗?
答案 0 :(得分:0)
我不了解onCreate()
,但我认为片段onCreate()
将始终是活动的onCreate()
。如果我制作片段,我总是使用onActivityCreated()
。在创建活动后调用此方法。