我在首选项活动中有checkboxpreference,我希望当其中一个复选框启用时,其他复选框应该禁用,反之亦然。 我想从我的主要课堂活动中做到这一点。
这是我的代码:
Preferencecheckbox.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:defaultValue="true"
android:icon="@drawable/img"
android:key="check1"
android:title="first" />
<CheckBoxPreference
android:defaultValue="false"
android:icon="@drawable/img2"
android:key="check2"
android:title="second" />
</PreferenceScreen>
Preferenceclass.java
public class preferenceclass extends PreferenceActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferencecheckbox);
}
答案 0 :(得分:1)
您需要为需要禁用的复选框添加依赖项。
像这样:
<CheckBoxPreference
android:defaultValue="false"
android:icon="@drawable/img2"
android:key="check2"
android:title="second"
android:dependency="check1" />
<强>更新强> 通过代码禁用其他首选项。
final CheckBoxPreference checkbox2 = (CheakBoxPreference) findPreference("pref_checkbox2_key");
CheckBoxPreference switch = (CheakBoxPreference) findPreference("pref_switch_key");
switch.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
if (switch.isChecked()) {
checkbox2.setEnabled(false);
} else {
checkbox2.setEnabled(true);
}
return true;
}
});
persistCheckBoxState(switch, checkbox2);
要在活动结束时保留更改,您需要获取此类偏好设置,并直接在下方添加。
public void persistCheckBoxState (CheckBoxPreference switch, CheckBoxPreference checkbox2) {
if (switch.isChecked ()){
checkbox2.setEnabled(false);
} else {
checkbox2.setEnabled(true);
}
}
答案 1 :(得分:1)
也许ListPreference
更符合您的要求。从可用性的角度来看,这将更有意义。当您必须从众多选择中选择一个时,这将是最明显的方法。有关详细说明,请参阅this帖子