我是Android编程的新手。在我的应用程序中我添加了首选项类,我调用了xml首选项,它存储在我的应用程序的xml文件夹中。这是它的代码
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference android:title="colors" android:key="colors"
android:summary="list of colors to choose from " android:entries="@array/list"
android:entryValues="@array/lvalues"></ListPreference>
</PreferenceScreen>
并且在java类中我只写了一行就是这个
addPreferencesFromResource(R.xml.prefs);
现在我能够显示偏好类以及列表中的一些颜色数据。
我的问题是选择列表首选项,它应该向我显示摘要属性中的所选首选项。目前它显示为“可供选择的颜色列表” 我想要的是显示所选颜色,说我选择了白色,摘要应该显示为白色。
请帮帮我。
谢谢你, 麦迪。
答案 0 :(得分:5)
你实际上可以在xml中完成它。试试这个:
<ListPreference
android:key="pref_list"
android:title="A list of preferences"
android:summary="%s"
android:entries="@array/pref_list_entries"
android:entryValues="@array/pref_list_entries_values"
android:defaultValue="0" />
您选择的值将替换“%s”。 有关进一步说明,请阅读此post
答案 1 :(得分:4)
在另一个代码示例中,有一个小错误导致显示旧值而不是新值。
这是一个工作版本:
ListPreference splashList = (ListPreference) findPreference("splash");
splashList.setSummary(splashList.getEntry());
splashList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
String nv = (String) newValue;
if (preference.getKey().equals("splash")) {
ListPreference splashList = (ListPreference) preference;
splashList.setSummary(splashList.getEntries()[splashList.findIndexOfValue(nv)]);
}
return true;
}
});
答案 2 :(得分:1)
您需要扩展ListPreference类并在xml文件中指定
class MyListPref extends ListPreference {
public void onClick (DialogInterface dialog, int which) {
this.setSummary(MyListPref.this.getEntry());
}
}
如果您的自定义首选项类名是com.sample.MyListPref,则xml条目将
<com.sample.MyListPref
android:key="pref_list"
android:title="List Preference"
android:dialogTitle="List Pref Dialog"
android:entries="@array/pref_items"
android:entryValues="@array/pref_items_values"/>
答案 3 :(得分:1)
您不需要执行扩展listPreferences。在您的PreferencesActivity文件中按照我的示例放置:
final ListPreference defaultTown=(ListPreference)findPreference(getString(R.string.pref_default_town_key));
Log.i("try",defaultTown.getKey());
defaultTown.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.i("theApp", "Selected = " + defaultTown.getValue());
defaultTown.setTitle(defaultTown.getValue());
return true;
}
});
关于更改值将更新标题 当您进入应用程序时,您需要使用当前首选项填充标题,而不是在xml中默认设置的颜色