2012-07-06 4 views
6

Sadece bir android ile CheckboxPreference tuşları: defaultValue = "true" aşağıdaki kodda gösterilecektir. Yani, defaultValue = "false" olan tuşların hiçbiri gösterilmiyor. Tercih dosyamdaki tüm anahtarların listesini nasıl alırım?SharedPreferences.getAll(), false olan tercih tuşlarına sahip değil. Tüm anahtarlar nasıl alınır?

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 
     } 
    } 

Docs göre getAll() olmalıdır: "tercihlerinden tüm değerleri al." Bununla birlikte, tercih yalnızca kullanıcı tarafından ayarlanmadıkça varsayılan = true olan anahtarları elde eder.

DÜZENLEME: This is likely related to Android Bug: 6441, ancak tüm anahtarları almak için bana bir geçici çözüm vermez.

+1

bir varsayılan değeri ve hiçbir kullanıcı değeri yoksa o zaman paylaşımlı içinde değil tercihleri. tüm tanımlanmış tercihleri ​​istiyorsanız, tercihlerinizi xml dosyasını yinelemeniz gerekebilir. – Ran

+0

@ Ran-> Bu tercihlerin android var: defaultValue = false, bu bir değer. – Fraggle

cevap

0

Sen (/ tüm tercihleri ​​devre dışı Ben etkinleştirmek için kullanabilirsiniz) Aşağıdaki tüm tercihleri ​​erişebilirsiniz:

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 
     } 
    } 
İlgili konular