Як перевірити, чи перевірено перемикач у радіогрупі в Android?


75

Мені потрібно встановити перевірку, яку користувач повинен заповнити / вибрати всі деталі на сторінці. Якщо будь-які поля порожні, хочу показати. Toast message to fill.Зараз мені потрібна перевірка набору для RadioButtonтого, що RadioGroup.я спробував цей код, але не працював належним чином. Запропонуйте мені правильний спосіб. Дякую.

// get selected radio button from radioGroup
int selectedId = gender.getCheckedRadioButtonId();
// find the radiobutton by returned id
selectedRadioButton = (RadioButton)findViewById(selectedId);
// do what you want with radioButtonText (save it to database in your case)
radioButtonText = selectedRadioButton.getText().toString();

if(radioButtonText.matches(""))
{
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
    Log.d("QAOD", "Gender is Null");
}
else
{
    Log.d("QAOD", "Gender is Selected");
}

1
якщо (radioGroup.getCheckedRadioButtonId () == radioGroup.getChildAt (radio1) .getId ()) {radio 1 встановлено; } інакше якщо (..... == radioGroup.getChildAt (radio2)) {радіо 2 встановлено; } ... використовуючи це, ви можете отримати вибране значення радіо. :)
Ріпал Тамболі

Привіт @RipalTamboli Дякуємо за коментар, але я можу отримати значення та текст перемикача. Мені потрібно перевірити, якщо користувач не перевіряє стать (Радіогрупа), після натискання кнопки відображатиметься повідомлення про помилку.
Шріхарі

1
гаразд. Ви можете перевірити, якщо не вибрано жодного параметра, то що повертає getCheckedRadioButtonID ()? якщо він повертає null / -1, тоді ваша робота виконується, перевіряючи, чи є вона null / -1, чи ні. :) nwys у гендерній групі, завжди потрібно вибрати один варіант за замовчуванням. Це стандартний спосіб його розробки :) .. дайте мені знати, якщо є якісь запити.
Ріпал Тамболі,

Відповіді:


205

Якщо ви хочете перевірити лише один, RadioButtonви можете скористатися isCheckedфункцією

if(radioButton.isChecked())
{
  // is checked    
}
else
{
  // not checked
}

і якщо у вас є, RadioGroupви можете використовувати

if (radioGroup.getCheckedRadioButtonId() == -1)
{
  // no radio buttons are checked
}
else
{
  // one of the radio buttons is checked
}

Дуже корисний. Дякую за відповідь.
Pooja

20

Все, що вам потрібно зробити, це використовувати getCheckedRadioButtonId()і isChecked()метод,

if(gender.getCheckedRadioButtonId()==-1)
{
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
}
else
{
    // get selected radio button from radioGroup
    int selectedId = gender.getCheckedRadioButtonId();
    // find the radiobutton by returned id
    selectedRadioButton = (RadioButton)findViewById(selectedId);
    Toast.makeText(getApplicationContext(), selectedRadioButton.getText().toString()+" is selected", Toast.LENGTH_SHORT).show();
}

https://developer.android.com/guide/topics/ui/controls/radiobutton.html


8

Використовуйте функцію isChecked () для кожної кнопки, яку потрібно перевірити.

RadioButton maleRadioButton, femaleRadioButton;

maleRadioButton = (RadioButton) findViewById(R.id.maleRadioButton);
femaleRadioButton = (RadioButton) findViewById(R.id.femaleRadioButton);

Потім використовуйте результат для розгляду справи if / else.

if (maleRadioButton.isChecked() || femaleRadioButton.isChecked()) {
     Log.d("QAOD", "Gender is Selected");
} else {
    Toast.makeText(getApplicationContext(), "Please select Gender", Toast.LENGTH_SHORT).show();
    Log.d("QAOD", "Gender is Null");
}

Привіт, дякую за відповідь. Мені потрібна перевірка всієї Радіогрупи, а не однієї радіо кнопки
Шріхарі

5
  rgrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch(i) {
                case R.id.type_car:
                    num=1;
                    Toast.makeText(getApplicationContext()," Car",Toast.LENGTH_LONG).show();
                    break;
                case R.id.type_bike:
                    num=2;
                    Toast.makeText(getApplicationContext()," Bike",Toast.LENGTH_LONG).show();
                    break;
            }
        }
    });

4

Спробуйте використати метод isChecked ();

Подібно до,

selectedRadioButton.isChecked () -> повертає логічне значення.

Refere тут для отримання більш докладної інформації по радіо Кнопки


Дякуємо, що відповіли, що мені потрібна перевірка всієї групи радіо, а не однієї радіо-кнопки.
Шріхарі

1
ось вам. Використовуйте метод getCheckedRadioButtonId () на вашій RadioGroup, щоб дізнатись. Повертає -1, коли в групі не вибрано жодної кнопки RadioButton. Ви вже робите це. Отже, якщо selectedId дорівнює -1, це означає, що не вибрано стать. В іншому випадку щось вибирається в групі.
balachandarkm

4

спробуйте використати це

<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"       
    android:orientation="horizontal"
>    
    <RadioButton
        android:id="@+id/standard_delivery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Standard_delivery"
        android:checked="true"
        android:layout_marginTop="4dp"
        android:layout_marginLeft="15dp"
        android:textSize="12dp"
        android:onClick="onRadioButtonClicked"   
    />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Midnight_delivery"
        android:checked="false"
        android:layout_marginRight="15dp"
        android:layout_marginTop="4dp"
        android:textSize="12dp"
        android:onClick="onRadioButtonClicked"
        android:id="@+id/midnight_delivery"
    />    
</RadioGroup>

це клас Java

public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();

        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.standard_delivery:
                if (checked)
                    Toast.makeText(DishActivity.this," standard delivery",Toast.LENGTH_LONG).show();
                    break;
            case R.id.midnight_delivery:
                if (checked)
                    Toast.makeText(DishActivity.this," midnight delivery",Toast.LENGTH_LONG).show();
                    break;
        }
    }

4

Я використовував наступне, і це працювало для мене. Я використовував логічну функцію перевірки, коли, якщо будь-яка кнопка перемикання в групі радіозв'язку перевіряється, функція перевірки повертає істину та робиться подання. якщо повернуто хибне, подання не робиться, а тост за "Вибрати стать" відображається:

  1. MainActivity.java

    public class MainActivity extends AppCompatActivity {
        private RadioGroup genderRadioGroup;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //Initialize Radio Group And Submit Button
        genderRadioGroup=findViewById(R.id.gender_radiogroup);
        AppCompatButton submit = findViewById(R.id.btnSubmit);
    
        //Submit Radio Group using Submit Button
        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Check Gender radio Group For Selected Radio Button
                if(genderRadioGroup.getCheckedRadioButtonId()==-1){//No Radio Button Is Checked
                    Toast.makeText(getApplicationContext(), "Please Select Gender", Toast.LENGTH_LONG).show();
                }else{//Radio Button Is Checked
                    RadioButton selectedRadioButton = findViewById(genderRadioGroup.getCheckedRadioButtonId());
                    gender = selectedRadioButton == null ? "" : selectedRadioButton.getText().toString().trim();
                }
                //Validate
                if (validateInputs()) {
                    //code to proceed when Radio button is checked
                }
            }
        }
        //Validation - No process is initialized if no Radio button is checked
        private boolean validateInputs() {
            if (genderRadioGroup.getCheckedRadioButtonId()==-1) {
                return false;
            }
            return true;
        }
    }
    
  2. У Activity_main.xml:

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/gender"/>
    
        <RadioGroup
                android:id="@+id/gender_radiogroup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
            <RadioButton
                    android:id="@+id/male"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/male"/>
    
            <RadioButton
                    android:id="@+id/female"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/female""/>
    
        </RadioGroup>
    
        <android.support.v7.widget.AppCompatButton
            android:id="@+id/btnSubmit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/submit"/>
    
    </LinearLayout>
    

Якщо не вибрано жодної гендерної кнопки, то код продовження не запускатиметься.

Сподіваюся, це допоможе.


Не могли б ви додати коментарі щодо того, що це робить, і чому це вирішує проблему?
Matt C

1
Я додав коментарі до поста вище. Сподіваюся, коментарі показують, що робить код і чому він вирішує проблему.
profjack

3

Я використовував ідентифікатори своїх перемикачів для порівняння з ідентифікатором того, checkedRadioButtonщо отримавmRadioGroup.getCheckedRadioButtonId()

Ось мій код:

mRadioButton1=(RadioButton)findViewById(R.id.first);
mRadioButton2=(RadioButton)findViewById(R.id.second);
mRadioButton3=(RadioButton)findViewById(R.id.third);
mRadioButton4=(RadioButton)findViewById(R.id.fourth);

mNextButton=(Button)findViewById(R.id.next_button);

mNextButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int selectedId=mRadioGroup.getCheckedRadioButtonId();

        int n=0;
        if(selectedId==R.id.first){n=1;}

        else if(selectedId==R.id.second){n=2;}

        else if(selectedId==R.id.third){n=3;}

        else if(selectedId==R.id.fourth){n=4;}
        //. . . .
    }

1

Я відповідаю згідно з документацією , яка працює нормально.

1) До файлу xml включіть, android:onClick="onRadioButtonClicked"як показано нижче:

<RadioGroup
android:id="@+id/rg1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<RadioButton
    android:id="@+id/b1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="onCreateOptionsMenu()"
    android:onClick="onRadioButtonClicked"
            />
<RadioButton
    android:id="@+id/b2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="onCreateMenu()"
    android:onClick="onRadioButtonClicked"
            />
</RadioGroup>

2) У файлі Java реалізуйте onRadioButtonClickedметод за межами onCreate()методу, як показано нижче:

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.b1:
            if (checked)
            {
                Log.e("b1", "b1" );
                break;
            }
        case R.id.b2:
            if (checked)
                break;
    }
}

0
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            if (mRadioButtonMale.isChecked()) {
                text = "male";
            } else {
                text = "female";
            }
        }
    });

АБО

 mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            if (mRadioButtonMale.isChecked()) { text = "male"; }
            if(mRadioButtonFemale.isChecked()) { text = "female"; }
        }
    });
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.