Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android首选项似乎在应用程序启动之间不会持久化_Android_Android Preferences - Fatal编程技术网

Android首选项似乎在应用程序启动之间不会持久化

Android首选项似乎在应用程序启动之间不会持久化,android,android-preferences,Android,Android Preferences,我正在使用首选项在我的Nexus 7应用程序中保存一些用户设置。我将值保存到首选项的代码是: SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); String systemId = spinnerActivity.getSelectedItem().toString(); e

我正在使用首选项在我的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()函数调用的。奇怪的是,在应用程序的其他地方加载了其他偏好值。很好,只是这个案子不起作用。有人能看出哪里出了问题吗?

不要使用:

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);
请尝试下面的方法

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

SharedReferences SharedReferences=GetSharedReferences(“项目名称”,Context.MODE\u PRIVATE)

你确定你正在保存你认为是的值吗?是的,我已经在调试器中仔细检查过了,null值永远不会保存。我已将其步进以保存有效值。在重新启动应用程序时。但是我总是读回null。用它来替换代码的保存部分和检索部分。答对了。我需要调用SharedReferences而不是Preferences。它使用类名作为第一个参数,当然,这在不同的类之间是不同的。幸运的猜测。很高兴我能帮忙