应用程序启动之间似乎没有持久保存Android首选项

时间:2014-03-27 17:35:42

标签: android android-preferences

我正在使用偏好设置在我的Nexus 7应用中保存一些用户设置。我将值保存到首选项的代码是:

    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    String systemId = spinnerActivity.getSelectedItem().toString();
    editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId);
    if (!editor.commit()) {
        Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show();
    }

我已经使用调试器逐步完成了这项工作,并且正确调用它。当我重新启动我的应用程序并尝试使用下面的代码读回值,我总是得到null。

     SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
     String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null);
     ConnectionInfo.setSystemId(savedSystemId);

从主活动中的onCreate()函数调用加载。在应用程序的其他位置奇怪地加载其他首选项值。工作正常,只是这一个案例不起作用。任何人都可以看到什么是错的吗?

3 个答案:

答案 0 :(得分:1)

请尝试以下

SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
String systemId = spinnerActivity.getSelectedItem().toString();
editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId);
if (!editor.commit()) {
    Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show();
}



SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE);
 String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null);
 ConnectionInfo.setSystemId(savedSystemId);

答案 1 :(得分:1)

SharedPreferences sharedPref = getSharedPreferences(“Name_of_item”,Context.MODE_PRIVATE);

答案 2 :(得分:0)

而不是使用:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);

尝试使用它:

import android.preference.PreferenceManager;
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);

或者,您可以使用命名首选项页面:

public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences sharedPref = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);