【问题标题】:Radio button option in preferences - android首选项中的单选按钮选项 - android
【发布时间】:2023-03-30 14:19:02
【问题描述】:

如何在我的首选项屏幕中显示某种带有一组单选按钮的对话框。类似的东西;

每个按钮都将与一种颜色相关联,例如红色、蓝色、绿色、黑色、黄色等,我对每种颜色都有方法。当按下单选按钮时,我希望调用相关方法。例如,我的一种方法是;

public void red(){
.....
.....
}

当标记为红色的单选按钮被按下时,我希望调用 red() 方法,然后将主活动的背景颜色更改为红色。

【问题讨论】:

    标签: android background radio-button preferences


    【解决方案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

    希望对你有所帮助!

    问候

    【讨论】:

    • 条目值的字符串数组不应该放在res/values/array.xml而不是res/values/strings.xml吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 2013-08-27
    • 2014-03-11
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多