我的应用程序中的共享首选项工作正常,直到我需要释放设备上的一些空间,因为我开始收到“存储空间不足”消息。因此,我从我的设备中删除了一些图片并卸载了应用程序。重新安装应用程序后,在重新输入应用程序时不会保留我的共享首选项值。换句话说,在我的注册活动中设置共享首选项值后,我完成了活动。重新进入应用程序后,我保留的保存布尔值不会保留,因此会重新启动“注册活动”。如果没有代码更改,这怎么可能?我已经阅读了几个有类似问题但没有人帮助我处理我的情况。
以下是我在注册活动中设置共享首选项代码的方法:
isSaved = true;
//***Shared Preferences is merely storing values in area to be retrieved later
//Set up for the Shared Preferences
String name = userName.getText().toString();
String email = userEmail.getText().toString();
//set the Shared Preferences, 0 is the default value
SharedPreferences userCreds = getSharedPreferences(PREFS_Creds,0);
Editor editor = userCreds.edit();
//editor.clear();
editor.putString("userName", name);
editor.putString("userEmail", email);
editor.putBoolean("Saved", isSaved);
editor.commit();
以下是重新进入时指导应用的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//May have to make a black screen for the transition here
//setContentView(R.layout.register_scrn);
//Gets the isSaved value from Shared Preferences, if no value it will default to false
getPrefFlag();
System.out.println("1st isSaved value: " + isSaved);
//If the registration already exists, go to the recording and finish
if (isSaved) {
Intent comOnPatrol2 = new Intent(getApplicationContext(),ComOnPatrol2.class);
startActivity(comOnPatrol2);
finish();
}else{
//Show Registration screen view and complete registration
super.onCreate(savedInstanceState);
setContentView(R.layout.register_scrn);
...
以下是getPrefFlag代码:
private void getPrefFlag() {
userCreds = PreferenceManager.getDefaultSharedPreferences(this);
isSaved = userCreds.getBoolean("Saved", false);
System.out.println("isSaved after: " + isSaved);
}
答案 0 :(得分:0)
首先使用名称为getSharedPreferences
的{{1}},然后使用默认首选项:PREFS_Creds
。除非PREFS_Creds与默认值相同,否则您的错误是因为您使用了不同的首选项文件。