2012-10-03 47 views
0

我存储我的布尔像这样在我的偏好活动:从共享偏好越来越布尔总是返回false

OnPreferenceChangeListener locaListener = new OnPreferenceChangeListener() {  
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
       if(newValue.toString().trim().equals("true")){ 
        editor.putBoolean("locationEnabled", true); 
       }else if (newValue.toString().trim().equals("false")){ 
        editor.putBoolean("locationEnabled", false); 
       } 
       editor.commit(); 
       return true; 
      } 
     }; 

,并试图找回它像这样在我的主要活动:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
boolean prefLocationEnabled = prefs.getBoolean("locationEnabled", false); 

同样的方法与字符串工作完美,但与布尔似乎总是返回默认值是错误的。任何人都知道我做错了什么?

+0

你确定'editor.putBoolean(“locationEnabled”,true);'被调用? 'newValue.toString()。trim()。equals(“true”)'评估为true? – CaseyB

+0

是的,无论在哪种情况下,我都使用System.out对其进行了测试。它存储的价值,但不能检索它 –

回答

1

当您保存并加载时调用getPreferences(MODE_PRIVATE)后,调用PreferenceManager.getDefaultSharedPreferences(this);

我认为这不是一样的喜好。只使用其中的一种

0

试试看下面的代码。如果你给参数如真或假,它会返回你给的值。

Boolean tmp = null; 
tmp = sharedPreferences.getBoolean("key", tmp.getBoolean("")); 

它给你你得到的价值。