我有一个活动和一个片段。在活动中,我正在这样初始化当前用户(手动):
User currentUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
currentUser = new User("email", "name", "secondName", "age");
\\.....}
MainActivity包含这样的方法:
public User getCurrentUser() {
return currentUser;
}
现在,这是问题所在:在子片段中,我像这样从mainActivity调用getCurrentUser:
User u = MainActivity.newInstance().getCurrentUser();
MainActivity.newInstance()-像这样在mainActivity中定义,返回活动的静态实例:
private static MainActivity mainActivityInstance = new MainActivity();
public static MainActivity newInstance() {
return mainActivityInstance;
}
问题在于,即使在mainActivity中使用有效数据初始化了currentUser,getCurrentUser仍返回空对象引用。因此,举个例子
u.getName();
会抛出NullPointerException我该如何解决?我觉得我很害怕。
MainActivity.newInstance()-像这样在mainActivity中定义,返回活动的静态实例:
切勿自己直接创建活动的实例。
问题是,即使在mainActivity中使用有效数据初始化了currentUser,getCurrentUser仍返回空对象引用
这些活动实例是单独的Java对象。
从片段中,调用getActivity()
以检索承载该片段的活动对象。任何有关Android应用程序开发的好书或课程都涵盖了这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句