标签:dependencies checkboxpreference android
我的偏好设置屏幕中有三个复选框.我想让用户一次只选择一个复选框.
我该如何实现?
先感谢您.
解决方法:
您将需要创建一个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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。