我需要设置用户必须填写/选择页面中所有详细信息的验证。如果任何字段为空,则想显示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");
}
答案 0 :(得分:147)
如果您只想查看一个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
}
答案 1 :(得分:14)
您需要做的就是使用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
答案 2 :(得分:7)
对每个必须检查的radioButton使用 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");
}
答案 3 :(得分:3)
尝试使用此
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;
}
}
这是java类
tryCatch()
答案 4 :(得分:2)
答案 5 :(得分:2)
我使用我的radiobuttons的id与我使用enter code here
checkedRadioButton
的ID进行比较
这是我的代码:
mRadioGroup.getCheckedRadioButtonId()
答案 6 :(得分:2)
我使用了以下内容,并且对我有用。我使用了一个布尔验证函数,其中如果选中了“单选组”中的任何“单选按钮”,则验证函数返回true并提交。如果返回false,则不提交任何内容,并显示“ Select Gender”的敬酒:
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>
如果未选择性别单选按钮,则继续执行的代码将不会运行。
我希望这会有所帮助。
答案 7 :(得分:2)
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;
}
}
});
答案 8 :(得分:0)
我的回答是根据the documentation进行的,效果很好。
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;
}
}
答案 9 :(得分:0)
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (mRadioButtonMale.isChecked()) {
text = "male";
} else {
text = "female";
}
}
});
OR
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (mRadioButtonMale.isChecked()) { text = "male"; }
if(mRadioButtonFemale.isChecked()) { text = "female"; }
}
});
答案 10 :(得分:0)
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;
}
}
});