Установите только один флажок - PullRequest
6 голосов
/ 30 января 2011

У меня есть несколько флажков, но я хочу, чтобы пользователь выбрал только один флажок. Я пробую заявление if-else, но оно бесполезно. Итак, я хочу знать, как быть таким.

Спасибо

Ответы [ 3 ]

11 голосов
/ 30 января 2011

Почему вместо этого вы не используете радио-кнопки?Они предназначены именно для этого.

Но если вы настаиваете на использовании флажков, измените событие при выборе любого флажка так, чтобы при его выборе он отключал другие флажки.

3 голосов
/ 10 февраля 2019

Я сделал это:

public void check_checkbox(){

    int CB_count=0;
    if (CB_1.isChecked()) {
        CB_count=CB_count+1;
    }if (CB_2.isChecked()) {
        CB_count=CB_count+1;
    }if (CB_3.isChecked()) {
            CB_count=CB_count+1;}

        if (CB_count == 1) {

            //do your magic

        } else {
            Toast.makeText(getActivity(), "you only can select 1 checkbox", Toast.LENGTH_SHORT).show();
        }
}

Я улучшаю его, на onCreateView =

CB_1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    CB_2.setChecked(false);
                    CB_3.setChecked(false);
                }
            }
        });
        CB_2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    CB_1.setChecked(false);
                    CB_3.setChecked(false);
                }
            }
        });
        CB_3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    CB_2.setChecked(false);
                    CB_1.setChecked(false);
                }
            }
        });
0 голосов
/ 11 февраля 2015

Я сделал это:

- В моем макете:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:alignmentMode="alignBounds"
    android:columnCount="1"
    android:background="#ff99f6ff"
  >

    <ImageView
        android:id="@+id/escudo"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_gravity="center_horizontal|fill_vertical"
        android:src="@drawable/dicon2"
        android:contentDescription="foto logo"
        android:layout_marginTop="30dp"
        android:layout_alignParentTop="false"
        android:layout_centerInParent="true" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_gravity="top"
        android:layout_below="@+id/radioGroup"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="48dp" />

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/radioGroup"
        android:orientation="horizontal"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="34dp"
        android:gravity="center_horizontal"
        android:checkedButton="1"
        >

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/check_a"
            android:id="@+id/checkBoxA"
            android:layout_above="@+id/escudo"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:onClick="onCheckboxClicked" />

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/check_b"
            android:id="@+id/checkBoxB"
            android:layout_alignTop="@+id/checkBoxA"
            android:layout_toRightOf="@+id/checkBoxA"
            android:layout_toEndOf="@+id/checkBoxA"
            android:onClick="onCheckboxClicked"/>

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/check_c"
            android:id="@+id/checkBoxC"
            android:layout_alignTop="@+id/checkBoxB"
            android:layout_toRightOf="@+id/checkBoxB"
            android:layout_toEndOf="@+id/checkBoxB"
            android:onClick="onCheckboxClicked"/>

    </RadioGroup>
</RelativeLayout>


import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;

public class MainActivity extends ActionBarActivity {

    private CheckBox checkBoxA, checkBoxB, checkBoxC;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkBoxA = (CheckBox) findViewById(R.id.checkBoxA);
        checkBoxB = (CheckBox) findViewById(R.id.checkBoxB);
        checkBoxC = (CheckBox) findViewById(R.id.checkBoxC);
    }

    public void onCheckboxClicked(View view) {

        switch(view.getId()) {

            case R.id.checkBoxA:

                    checkBoxB.setChecked(false);
                    checkBoxC.setChecked(false);

                break;

            case R.id.checkBoxB:

                    checkBoxC.setChecked(false);
                    checkBoxA.setChecked(false);

                break;

            case R.id.checkBoxC:

                    checkBoxA.setChecked(false);
                    checkBoxB.setChecked(false);

                break;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...