SharedPreferences不再起作用

时间:2015-12-13 22:28:52

标签: android sharedpreferences

我的应用程序中的共享首选项工作正常,直到我需要释放设备上的一些空间,因为我开始收到“存储空间不足”消息。因此,我从我的设备中删除了一些图片并卸载了应用程序。重新安装应用程序后,在重新输入应用程序时不会保留我的共享首选项值。换句话说,在我的注册活动中设置共享首选项值后,我完成了活动。重新进入应用程序后,我保留的保存布尔值不会保留,因此会重新启动“注册活动”。如果没有代码更改,这怎么可能?我已经阅读了几个有类似问题但没有人帮助我处理我的情况。

以下是我在注册活动中设置共享首选项代码的方法:

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);

}

1 个答案:

答案 0 :(得分:0)

首先使用名称为getSharedPreferences的{​​{1}},然后使用默认首选项:PREFS_Creds。除非PREFS_Creds与默认值相同,否则您的错误是因为您使用了不同的首选项文件。