复选框首选项更改值

问题描述:

我在首选项活动中使用了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); 
} 
+0

看到'机器人:dependency'在'android.preference.Preference' – pskink

+0

我不认为我们可以在个人偏好屏幕 – Ravi

您需要依赖添加到你需要禁用的复选框。

像这样:

<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); 
    } 
} 
+0

和单选按钮,如果有超过2个复选框,然后我们可以添加3或更多依赖于彼此 – Ravi

+0

是的。 'android:dependency'属性使用引用的首选项的状态来处理禁用或启用的状态。 – codeFreak

+0

你能帮我做到这一点编程。 – Ravi

也许ListPreference是你想要的。从可用性的角度来看,这会更有意义。当你不得不从多个选择中选择一个时,这将是最明显的方法。见this后获取进一步的说明

+0

好的我已经使用了列表首选项 – Ravi

+0

所以,它工作? – Pynnie

+0

以及listprefernce工程,但我不能够使用它的图像 – Ravi