复选框首选项更改值
问题描述:
我在首选项活动中使用了checkbox首选项,我希望当其中一个复选框被启用时,其他复选框应该禁用,反之亦然。 我想从我的主要课堂活动中做到这一点。复选框首选项更改值
这里是我的代码:
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);
}
答
您需要依赖添加到你需要禁用的复选框。
像这样:
<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);
}
}
看到'机器人:dependency'在'android.preference.Preference' – pskink
我不认为我们可以在个人偏好屏幕 – Ravi