我创建了一个名为session的课程,我只是在那里维护我的所有共享偏好..
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
现在从UI应用程序我调用此会话,我的所有变量都没有得到默认值,如..
public void setIsFirsTimeCall(boolean IsFirsTimeCall) {
prefs.edit().putBoolean("IsFirsTimeCall", IsFirsTimeCall).commit();
prefsCommit();
}
public boolean getIsFirsTimeCall() {
return prefs.getBoolean("IsFirsTimeCall", true);
}
所以当我调用getIsFirsTimeCall()时,它会给我错误
我不知道为什么会这样做 但是当我将这个项目复制并分享到其他PC时,它的工作正常 你有没有看过这种行为
答案 0 :(得分:0)
我不知道这是否可以帮助您解决:
我认为你可以这样做:
public static void setIsFirsTimeCall(Context cntx, boolean IsFirsTimeCall) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
prefs.edit().putBoolean("IsFirsTimeCall", IsFirsTimeCall).commit();
prefsCommit();
}
public static boolean getIsFirsTimeCall(Context cntx) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
return prefs.getBoolean("IsFirsTimeCall", true);
}
我已经在prefs
类的构造函数中移动了Session
的声明和定义,在每个需要它的方法中。每种方法都是static
,因此您可以通过以下方式从Session
类之外调用它们:Session.getIsFirsTimeCall(yourContext)
等等。
也许您必须更改代码的行为,因为我不知道您的方法prefsCommit()
是否可以成为static
,否则您无法通过静态方法调用它。
希望它能帮到你