MultiSelectListPreference setEntries не отображается

Я пытаюсь создать приложение для Android, и мне нужно MultiSelectListPreference опция в меню настроек. Я создал PreferenceActivity чтобы справиться с этим, и я создал preferences.xml файл, но мне нужно иметь возможность динамически загружать элементы списка в программе. Я знаю, что мне нужно использовать setEntries а также setEntryValues методы, чтобы сделать это, но когда я использую эти методы, не выдается никаких исключений, а также заголовок и краткое изложение MultiSelectListPreferenc показать, но элементы не появляются.

Я проверил, что массивы я использую для заполнения entries а также entryValues не пустые, распечатывая их, а также распечатывая результат getEntries() а также getEntryValues() после set они и оба они показывают список участников для заполнения; однако никакие элементы не обнаруживаются.

мой preferences.xml код:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <MultiSelectListPreference
        android:key="markedApps"
        android:title="Targeted Apps"
        android:summary="Select apps to conditionally disable" />
</PreferenceScreen>

мой AppSettings.java код:

public class AppSettings extends PreferenceActivity {
    public static MultiSelectListPreference blocked;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        blocked = new MultiSelectListPreference(this);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefFrag()).commit();
    }
    public static class PrefFrag extends PreferenceFragment {
        @Override
        public void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
            MultiSelectListPreference blocked = (MultiSelectListPreference)findPreference("markedApps");
            if (blocked == null)
                Log.e("NullPointerException", "Blocked is null");
            AppSelector.populateAppList();
            CharSequence[] appNames = new CharSequence[AppSelector.Data.appNames.size()];
            CharSequence[] allApps = new CharSequence[AppSelector.Data.allApps.size()];
            int i = 0;
            for (String appName : AppSelector.Data.appNames)
                appNames[i++] = (CharSequence) appName;
            i = 0;
            for (String app : AppSelector.Data.allApps)
                allApps[i++] = (CharSequence) app;
            blocked.setEntries(appNames);
            blocked.setEntryValues(allApps);

        }
    }
}

Заранее благодарю за любую помощь, которую вы оказываете.

1 ответ

Решение

Ого, теперь я чувствую себя очень глупо. Оказывается, моя проблема заключалась в том, что я ожидал, что список будет отображаться под заголовком и сводкой, тогда как на самом деле вы должны нажать на заголовок и сводку, чтобы сделать список всплывающим.

Другие вопросы по тегам