其他分享
首页 > 其他分享> > android checkboxpreference中的多重依赖

android checkboxpreference中的多重依赖

作者:互联网

我的偏好设置屏幕中有三个复选框.我想让用户一次只选择一个复选框.
我该如何实现?

先感谢您.

解决方法:

您将需要创建一个onpreferenceChangelistener:

prefChangeListener = new Preference.OnPreferenceChangeListener() {

                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    if (preference == pref1 && newValue.toString().equals("true")){
                        pref2.setChecked(false);
                        pref3.setChecked(false);
                    }
                    if (preference == pref2 && newValue.toString().equals("true")){
                        pref1.setChecked(false);
                        pref3.setChecked(false);
                    }
                    if (preference == pref3 && newValue.toString().equals("true")){
                        pref1.setChecked(false);
                        pref2.setChecked(false);
                    }
                    return true;    
                }
        };

然后使用它

pref1.setOnPreferenceChangeListener(prefChangeListener);
pref2.setOnPreferenceChangeListener(prefChangeListener);
pref3.setOnPreferenceChangeListener(prefChangeListener);

或者,您可以使用ListPreference,它将弹出一个单选组,您只需在其中放置三个选项即可.这就是我在应用程序中所做的,但是如果需要checkboxpreferences,那么当然可以.

这是我的列表首选项(用于选择响铃时间):

<ListPreference android:persistent="true"
            android:title="Ring Time"
            android:summary="Choose how long the phone will ring when activated"
            android:key="ringTime"
            android:defaultValue="ringNot"
            android:entries="@array/ringTime"
            android:entryValues="@array/ringSetting" />

这是我的@ array / ringTime和@ array / ringSetting的XML

 <?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="ringTime">
   <item>Don\'t Ring</item>
   <item>Ring 30 Seconds</item>
   <item>Ring 2 Minutes</item>   
   <item>Ring 5 Minutes</item>
</string-array>
<string-array name="ringSetting">
   <item>ringNot</item>
   <item>ring30Sec</item>
   <item>ring2Min</item>   
   <item>ring5Min</item>
</string-array>

</resources>

我知道到目前为止,这是一个5个月大的问题,但我认为这可能会对其他人有所帮助.

标签:dependencies,checkboxpreference,android
来源: https://codeday.me/bug/20191208/2093365.html