Dans l'exemple suivant, toutes les clés de réglage sont enregistrées. La clé est que «PreferenceGroup» est mélangé avec la «Preference» répertoriée.
PreferenceScreen prefScreen = getPreferenceScreen();
int prefCount = prefScreen.getPreferenceCount();
for (int i = 0; i < prefCount; i++) {
	Preference pref = prefScreen.getPreference(i);
	if (pref instanceof PreferenceGroup) {
		setupPrefsRecursive((PreferenceGroup)pref);
	} else if (!Strings.isNullOrEmpty(pref.getKey())) {
		Log.i(TAG, pref.getKey());
	}
}
private void setupPrefsRecursive(PreferenceGroup prefGroup) {
	int prefGroupCount = prefGroup.getPreferenceCount();
	for (int i = 0; i < prefGroupCount; i++) {
		Preference pref = prefGroup.getPreference(i);
		if (pref instanceof PreferenceGroup) {
			setupPrefsRecursive((PreferenceGroup)pref);
		} else if (!Strings.isNullOrEmpty(pref.getKey())) {
			Log.i(TAG, pref.getKey());
		}
	}
}
Si vous disposez des paramètres suivants
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:mozc="http://schemas.android.com/apk/res-auto">
    <PreferenceCategory android:title="@string/pref_cat_1">
        <CheckBoxPreference
            android:defaultValue="false"
            android:key="pref_key_1"
            android:title="@string/pref_title1" />
        <PreferenceCategory android:title="@string/pref_cat_1_1">
            <Preference
                android:key="pref_key_2"
                android:persistent="false"
                android:title="@string/pref_title2">
            </Preference>
        </PreferenceCategory>
    </PreferenceCategory>
    <PreferenceCategory android:title="@string/pref_cat_2">
        <CheckBoxPreference
            android:defaultValue="true"
            android:key="pref_key_3"
            android:title="@string/pref_title3" />
    </PreferenceCategory>
</PreferenceScreen>
La sortie sera la suivante.
pref_key_1
pref_key_2
pref_key_3
Je l'ai écrit parce qu'il n'y avait rien de particulier.
Recommended Posts