如何在我的首选项屏幕中设置一组包含单选按钮的对话框。喜欢的东西;
每个按钮都会与一种颜色相关联,例如红色,蓝色,绿色,黑色,黄色等,我有每种颜色的方法。按下单选按钮时,我希望调用相关方法。例如,我的方法之一是;
public void red(){
.....
.....
}
当按下标有红色的单选按钮时,我想调用red()方法,然后将主活动的背景颜色更改为红色。
答案 0 :(得分:1)
我不知道你是否解决了这个问题。我会在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。
我希望这有帮助!
此致