我正在使用偏好设置在我的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()函数调用加载。在应用程序的其他位置奇怪地加载其他首选项值。工作正常,只是这一个案例不起作用。任何人都可以看到什么是错的吗?
答案 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);