Java SharedReferences不保存布尔值

Java SharedReferences不保存布尔值,java,android,sharedpreferences,Java,Android,Sharedpreferences,我的Galaxy Note 3上的共享首选项出现了一个奇怪的问题,“saved_name”首选项工作正常,但是当我尝试保存布尔值时,它不会保存。事实上,日志显示: 以前:真的 之后:false 这完全没有道理 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); //Get the preferences final SharedPrefere

我的Galaxy Note 3上的共享首选项出现了一个奇怪的问题,“saved_name”首选项工作正常,但是当我尝试保存布尔值时,它不会保存。事实上,日志显示: 以前:真的 之后:false 这完全没有道理

   final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); //Get the preferences
   final SharedPreferences.Editor editor = prefs.edit();
   auto_login_checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            Log.e("login", "before: " + isChecked);
            editor.putBoolean("saved_login ", isChecked);
            editor.commit();

            boolean is_saved = prefs.getBoolean("saved_login", false);
            //WHY IS THIS PRINTING FALSE IF THE ABOVE IS TRUE?
            Log.e("saved", "after: " + is_saved);
        }
       });

   String name = prefs.getString("saved_name", null); //get a String
       if(name != null){
            usernameField.setText(name); 
          }
删除putBoolean中“saved_login”的空格,如下所示:

editor.putBoolean("saved_login", isChecked);

奥马尔的答案是正确的。此外,为了避免将来出现此类问题,最好使用静态字符串变量来存储共享pref的键

private static final String KEY_SAVED_LOGIN = "saved_login";

等等。

在第一次调用
putBoolean
之后,您有一个尾随空格。“saved_login”和“saved_login”不是一回事。这应该作为答案发布。