Как проверить, проверяется ли радиокнопка в радиогруппе в Android?
Мне нужно установить подтверждение, что пользователь должен заполнить / выбрать все детали на странице. Если какие-либо поля пусты, хочу показать 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");
}
11 ответов
If you want to check on just one 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
}
Все, что вам нужно сделать, это использовать 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
Используйте функцию 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");
}
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;
}
}
});
Я использовал следующее, и это сработало для меня. Я использовал булеву функцию проверки, где, если отмечена какая-либо радиокнопка в группе радиостанций, функция проверки возвращает значение true и выполняется отправка. если возвращено значение false, отправка не выполняется, и отображается тост "Выбор пола":
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; } }
В 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>
Если переключатель пола не выбран, код для продолжения не будет запущен.
Надеюсь, это поможет.
Попробуйте использовать это
<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;
}
}
Я использовал идентификаторы своих радиокнопок, чтобы сравнить с идентификатором 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;}
//. . . .
}
Попробуйте использовать метод isChecked();
Подобно,
selectedRadioButton.isChecked () -> возвращает логическое значение.
См. Здесь для получения более подробной информации о Radio Button
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"; }
}
});
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
checkedId = radioGroup.getCheckedRadioButtonId();
switch (checkedId) {
case R.id.expert_rb:
// do something
break;
case R.id.no_expert_rb:
// do something else
break;
}
}
});
Мой ответ в соответствии с документацией, которая отлично работает.
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;
}
}