2012-07-06 19 views
6

只有帶有android:defaultValue =「true」的CheckboxPreference鍵將顯示在下面的代碼中。因此沒有顯示defaultValue =「false」的鍵。 如何獲得我的首選項文件中的所有密鑰列表?SharedPreferences.getAll()不具有false的首選項。如何檢索所有密鑰?

PreferenceManager.setDefaultValues(this,R.xml.settings,true); //readAgain=false is same result 
     SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this); 
     Map<String, ?> prefMap=prefs.getAll(); 
     for(String key:prefMap.keySet()) { 
      Log.d("preference key=",key); //only keys with true are shown 
     } 
    } 

按照文檔GETALL()應: 「從首選項檢索所有值。」但是,除非用戶稍後設置了首選項,否則它似乎只獲取具有default = true的鍵。

編輯:This is likely related to Android Bug: 6441,但沒有給我一個解決方法來獲得所有的關鍵。

+1

如果沒有默認值,並沒有用戶價值,則它不會在共享優先。如果你想要所有定義的首選項,也許你應該迭代你的首選項xml文件。 – Ran 2012-07-06 15:55:51

+0

@ Ran->這些首選項有android:defaultValue = false,所以這是一個值。 – Fraggle 2012-07-06 16:09:10

回答

0

您可以訪問所有的喜好與以下(我用它來啓用/禁用所有偏好):

final ListAdapter adapter = getPreferenceScreen().getRootAdapter(); 
    for (int i = 0; i < adapter.getCount(); i++) { 
     Object object = adapter.getItem(i); 
     if(object instanceof Preference){ 
      ((Preference)object).setEnabled(state); // state -> my own variable 
     } 
    } 
相關問題