以编程方式创建ListPreference - 但条目列表为空

时间:2014-03-05 15:48:53

标签: android 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);
    }
 }
}

以下是Setting.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>

ListPreference

这是我得到的。 {{1}}已成功但当我选择它时....没有条目:(我期待选项:“一个”,“两个”,“三个”

enter image description here

2 个答案:

答案 0 :(得分:9)

如果你设置了setDialogMessage()就找到它然后这会覆盖内容,所以通过删除这一行,它现在可以正常工作。

答案 1 :(得分:2)

您可能希望将setDialogMessage()替换为setDialogTitle()以取回标题。