我不知道你是否解决了这个问题。我会在 11 个月后回复它,以防万一有人需要这个
首先在你的PreferenceScreen xml 文件中放这个
<ListPreference
android:title="Choose a Background"
android:summary="Select your favorite color"
android:key="chosenColor"
android:defaultValue="Black"
android:entries="@array/colorArray"
android:entryValues="@array/colorArray" />
然后在您的strings.xml 中为您的条目和值创建一个字符串数组,如下所示:
<string-array name="colorArray">
<item>Black</item>
<item>Red</item>
<item>Blue</item>
</string-array>
注意:您可以对条目和值使用相同的数组,也可以使用不同的数组,一个数组用于条目,另一个数组用于值,为了简单起见,我使用了一个。
然后在您的偏好活动类中执行以下操作
添加您的PreferenceScreen xml 文件后
addPreferencesFromResource(R.xml.pref_actions);
使用OnPreferenceChangeListener 处理列表值的更改,如下所示:
findPreference("chosenColor").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String color = newValue.toString();
switch (color){
case "Black":
// your method corresponding to Black goes here
Toast.makeText(getActivity(),"Chosen color is: " + newValue.toString(), Toast.LENGTH_LONG).show();
break;
case "Red":
// your method corresponding to Red goes here
Toast.makeText(getActivity(),"Chosen color is: " + newValue.toString(), Toast.LENGTH_LONG).show();
break;
case "Blue":
// your method corresponding to Blue goes here
Toast.makeText(getActivity(),"Chosen color is: " + newValue.toString(), Toast.LENGTH_LONG).show();
break;
}
return false;
}
});
瞧,就是这样,你得到了它的工作
这是我设备的一些屏幕截图
这是从列表中选择任何颜色时的结果
所有案例(一次一个)
进一步阅读ListPreference。
希望对你有所帮助!
问候