在我的应用程序中,我有三个名为Home,SignIn和Add Page的活动。
在我的主屏幕中,我已声明共享偏好如下
Idprefs = PreferenceManager.getDefaultSharedPreferences(this);
int UserId = Idprefs.getInt("useridValue", 0);
如果UserId == 0我转到SignIn Activity或者转到AddPage
在我的SignIn活动中,用户必须输入名称和密码,从服务器返回xml文件中的id,我正在解析并将其存储为共享首选项。
要在其他活动中使用此值,我已将其声明如下
public static SharedPreferences Idprefs;
在我的oncreate方法中我有这个
Idprefs = PreferenceManager.getDefaultSharedPreferences(this);
来自我存储在共享偏好
中的已解析值SharedPreferences.Editor editor = Idprefs.edit();
editor.putInt("useridValue", userid);
editor.commit();
在我的第三个活动中,我有以下
int User = SignIn.Idprefs.getInt("useridValue",0);
这里我将用户值用于其他目的。
现在问题是以上所述的所有功能在app i启动时第一次正常工作,即它会像
一样HomeScreen--> SignIn --> AddPage
但当应用程序关闭并第二次打开时,流程如下
HomeScreen --> AddPage
现在应用程序崩溃了,我在logcat中引用了AddPage Activity中的以下行
int User = SignIn.Idprefs.getInt("useridValue",0);
第二次不调用SignIn页面以使其崩溃。如何在其他活动中获得储值,请求帮助
答案 0 :(得分:0)
您是否在活动中的super.onCreate()调用后访问共享首选项?否则,这将导致错误并导致应用程序出现故障。
答案 1 :(得分:0)
您可以通过未实例化的类(SignIn)访问首选项:
int User = SignIn.Idprefs.getInt("useridValue",0);
因此它可能是NULL
。
以这种方式访问类成员(特别是涉及上下文时)是一种不好的做法。只需在您当前的活动中实例化它们。