2012-07-06 11 views
6

android:defaultValue = "true"のCheckboxPreferenceキーのみが下のコードに表示されます。 defaultValue = "false"のキーは表示されません。 どのように私の環境設定ファイルのすべてのキーのリストを取得するのですか?ドキュメントによるとSharedPreferences.getAll()には、偽の設定キーがありません。すべてのキーを取得するには?

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()すべきである: "環境設定からすべての値を取得します。"しかし、ユーザによって後で設定が設定されていない限り、デフォルト= trueのキーしか得られないように見えます。

EDIT:This is likely related to Android Bug: 6441ただし、すべてのキーを取得するための回避策はありません。

+1

それがデフォルト値とのない値を持っていない場合、それは共有ではありません好み。定義されたすべての設定が必要な場合は、環境設定のxmlファイルを繰り返し処理する必要があります。 – Ran

+0

@ Ran->これらの設定にはandroid:defaultValue = falseがあります。したがって、これは値です。 – Fraggle

答えて

0

次の(I /無効すべての設定を有効にするためにそれを使用する)と、すべての設定にアクセスすることができます

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 
     } 
    } 
関連する問題