6

android:defaultValue="true" の CheckboxPreference キーのみが以下のコードに表示されます。そのため、defaultValue="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 のキーのみを取得するようです。

編集:これは Android Bug: 6441に関連している可能性がありますが、すべてのキーを取得するための回避策はありません。

4

1 に答える 1

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
        } 
    }
于 2013-02-27T18:56:27.350 に答える