Программное создание ListPreference - но список записей пуст

я пытаюсь программно создать ListPreference, что я могу сделать, но когда я выбираю его, список записей пуст. Я считаю, что я правильно устанавливаю setEntries() и setEntryValues() С CharSequence массивы, но он просто пуст, когда я его выбираю.

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

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // Display the fragment as the main content.
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit();
}

public static class PrefsFragment extends PreferenceFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.settings);

        // Create the new ListPref
        ListPreference customListPref = new ListPreference(getActivity());

        // Get the Preference Category which we want to add the ListPreference to
        PreferenceCategory targetCategory = (PreferenceCategory) findPreference("TARGET_CATEGORY");

         CharSequence[] entries = new CharSequence[]{"One", "Two", "Three"};
         CharSequence[] entryValues = new CharSequence[]{ "1", "2", "3" };

         // IMPORTANT - This is where set entries...looks OK to me
         customListPref.setEntries(entries);
         customListPref.setEntryValues(entryValues);

         customListPref.setTitle("Title");
         customListPref.setSummary("This is the summary");
         customListPref.setDialogMessage("Dialog Message");
         customListPref.setPersistent(true);

         // Add the ListPref to the Pref category
         targetCategory.addPreference(customListPref);
    }
 }
}

вот настройка.xml это просто имеет один PreferenceCategory которой ListPreference добавлено:

   <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="Some Options" android:key="TARGET_CATEGORY">
    </PreferenceCategory>
</PreferenceScreen>

вот что я получаю. The ListPreference успешно, но когда я выберите его.... Нет записей : (я ожидаю варианты: "один", "два", "три"

enter image description here

2 ответов


найдено, если вы установили setDialogMessage() затем это перезаписывает содержимое, поэтому, удалив эту строку, она работает сейчас.


возможно, вы захотите заменить setDialogMessage() by setDialogTitle() чтобы вернуть название.