如何在Dialog Android中单击复选框?

时间:2016-11-22 13:26:53

标签: android checkbox android-widget

我在对话框中有两个复选框。我想为这些复选框设置单一检查。这意味着如果我选中了复选框1,则取消选中复选框2。类似于我选中复选框2.如果选中复选框1,check_value变量设置为true,选中复选框2时设置为false。

这是我的代码,但无法实现我的预期

@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    final View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_dialogView, null);
    boolean check_value=false;

    checkbox1 = (CheckBox) dialogView.findViewById(R.id.checkbox1);
    checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            checkbox2.setChecked(false);
            checkbox1.setChecked(true);
            check_value=true;
        }
    });
    checkbox2 = (CheckBox) dialogView.findViewById(R.id.checkbox2);
    checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            checkbox2.setChecked(true);
            checkbox1.setChecked(false);
            check_value=false;
        }
    });
}

这是我的xml文件。 checkbox1为默认值为true

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/list"
        android:layout_centerInParent="true">
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/checkbox1"
        android:checked="true"
        android:layout_marginLeft="2dp"/>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/checkbox2"
        android:checked="false"
        android:layout_marginLeft="2dp" />
</LinearLayout>

4 个答案:

答案 0 :(得分:1)

试试这个:

    @Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_dialogView, null);
boolean check_value=false;

checkbox1 = (CheckBox) dialogView.findViewById(R.id.checkbox1);
checkbox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
           checkbox2.setChecked(false);
           check_value=true;
        }
        else
           checkbox2.setChecked(true);
    }
});
checkbox2 = (CheckBox) dialogView.findViewById(R.id.checkbox2);
checkbox2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
           checkbox1.setChecked(false);
           check_value=false;
        }
        else
           checkbox1.setChecked(true);

    }
});}

答案 1 :(得分:0)

您应该使用带有2个单选按钮的无线电组。它具有您正在寻找的默认功能。复选框不适用于此。

答案 2 :(得分:0)

在Android中,您可以使用“android.widget.CheckBox”类来呈现复选框。

在本教程中,我们将向您展示如何在XML文件中创建3个复选框,并演示如何使用侦听器来检查复选框状态 - 已选中或未选中。

https://www.mkyong.com/android/android-checkbox-example/

答案 3 :(得分:0)

请执行以下代码...

<RadioGroup
        android:id="@+id/myRadioGroup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5sp"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/rbTrue"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Accept"/>
        <RadioButton
            android:id="@+id/rbFalse"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Reject"/>
    </RadioGroup>

然后在活动中做... ...

这里radioGroup是RadioGroup的对象,它包含单选按钮

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if(checkedId==R.id.rbTrue){
                check_value = true;
            }else{
                check_value = false;
            }
        }
    });