【发布时间】:2014-05-19 20:01:08
【问题描述】:
我在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 可以将其设置为另一个对象。
我猜问题是Fragment#onCreate 在Activity#onCreate() 之前被调用,这就是我得到NPE 的原因,但我可能是错的。有什么想法吗?
【问题讨论】:
标签: android android-fragments android-activity