我正在尝试以编程方式创建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}}已成功但当我选择它时....没有条目:(我期待选项:“一个”,“两个”,“三个”
答案 0 :(得分:9)
如果你设置了setDialogMessage()
就找到它然后这会覆盖内容,所以通过删除这一行,它现在可以正常工作。
答案 1 :(得分:2)
您可能希望将setDialogMessage()
替换为setDialogTitle()
以取回标题。