У меня есть следующий макет предпочтений:
xml / preferences.xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:key="screen_pref">
<!-- Populate with paid preferences -->
<PreferenceCategory android:title="Advanced" android:key="cat_pref_mods">
</PreferenceCategory>
<!-- Populate with debugging preferences -->
<PreferenceCategory android:title="Dbg." android:key="cat_pref_dbg">
</PreferenceCategory>
</PreferenceScreen>
Первая категория (с ключом "cat_pref_mods") заполняется какожидается следующим кодом:
PreferenceCategory mPreferenceCategory = (PreferenceCategory) findPreference("cat_pref_mods");
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("screen_pref");
// Add category now
parentScreen.addPreference(mPreferenceCategory);
Однако при заполнении второй категории аналогичным образом:
PreferenceCategory mPreferenceCategory = (PreferenceCategory) findPreference("cat_pref_dbg");
PreferenceScreen parentScreen = (PreferenceScreen) findPreference("screen_pref");
// Add category now
parentScreen.addPreference(mPreferenceCategory);
Два заголовка категории, определенные в файле preferences.xml, появляются сразу один под другим ивпоследствии фактические настройки объединяются.
Почему категория с ключом "cat_pref_mods" вместе с ее записями не отображается полностью перед категорией "cat_pref_dbg"?
При отладке родительский экран кажется пустым(""), даже если он был предварительно инициализирован:
addPreferencesFromResource(R.xml.preferences);
Если создана только одна категория, элементы отображаются в ожидаемом порядке. При создании двух заголовки категорий размещаются сразу один под другим, но впоследствии записи появляются, как и ожидалось.