如何检查是否在 Android 的单选组中选中了单选按钮?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24992936/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to check if a radiobutton is checked in a radiogroup in Android?
提问by Srihari
I need to set validation that user must fill / select all details in a page. If any fields are empty wanna show Toast message to fill.
Now I need set validation for RadioButton
in the RadioGroup.
I tried this code but didn't work properly. Suggest me correct way. Thankyou.
我需要设置用户必须填写/选择页面中的所有详细信息的验证。如果任何字段是空的想要显示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");
}
回答by Apoorv
If you want to check on just one RadioButton
you can use the isChecked
function
如果您只想检查一个,RadioButton
您可以使用该isChecked
功能
if(radioButton.isChecked())
{
// is checked
}
else
{
// not checked
}
and if you have a RadioGroup
you can use
如果你有一个RadioGroup
你可以使用
if (radioGroup.getCheckedRadioButtonId() == -1)
{
// no radio buttons are checked
}
else
{
// one of the radio buttons is checked
}
回答by Mehul Joisar
All you need to do is use getCheckedRadioButtonId()
and isChecked()
method,
你需要做的就是使用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
https://developer.android.com/guide/topics/ui/controls/radiobutton.html
回答by Robin Ellerkmann
Use the isChecked() functionfor every radioButton you have to check.
对您必须检查的每个单选按钮使用isChecked() 函数。
RadioButton maleRadioButton, femaleRadioButton;
maleRadioButton = (RadioButton) findViewById(R.id.maleRadioButton);
femaleRadioButton = (RadioButton) findViewById(R.id.femaleRadioButton);
Then use the result for your if/else case consideration.
然后将结果用于 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");
}
回答by gaurav gupta
try to use this
尝试使用这个
<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>
this is java class
这是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;
}
}
回答by profHyman
I used the following and it worked for me. I used a boolean validation function where if any Radio Button in a Radio Group is checked, the validation function returns true and a submission is made. if returned false, no submission is made and a toast to "Select Gender" is shown:
我使用了以下内容,它对我有用。我使用了一个布尔验证函数,如果选中单选组中的任何单选按钮,验证函数将返回 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; } }
In 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>
主活动.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>
If no gender radio button is selected, then the code to proceed will not run.
如果没有选择性别单选按钮,则继续的代码将不会运行。
I hope this helps.
我希望这有帮助。
回答by balachandarkm
回答by Shubhdeep Singh
I used the id's of my radiobuttons to compare with the id of the checkedRadioButton
that I got using mRadioGroup.getCheckedRadioButtonId()
我使用的ID是我的单选按钮的使用的标识来比较checkedRadioButton
,我得到了使用mRadioGroup.getCheckedRadioButtonId()
Here is my code:
这是我的代码:
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;}
//. . . .
}
回答by Malik Shahbaz
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;
}
}
});
回答by Shivam Taneja
My answer is according to the documentation, which works fine.
我的回答是根据文档,它工作正常。
1) In xml file include android:onClick="onRadioButtonClicked"
as shown below:
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) In Java file implement onRadioButtonClicked
method outside onCreate()
method as shown below:
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;
}
}