Ich muss die Validierung festlegen, dass der Benutzer alle Details auf einer Seite ausfüllen muss. Wenn Felder leer sind, möchte ich Toast message to fill.
anzeigen. Jetzt muss ich die Validierung für RadioButton
im RadioGroup.
festlegen. Ich habe diesen Code ausprobiert, aber nicht richtig funktioniert. Schlage mich richtig vor. Vielen Dank.
// 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");
}
Wenn Sie nur einen RadioButton
prüfen möchten, können Sie die isChecked
-Funktion verwenden
if(radioButton.isChecked())
{
// is checked
}
else
{
// not checked
}
und wenn Sie eine RadioGroup
haben, können Sie verwenden
if (radioGroup.getCheckedRadioButtonId() == -1)
{
// no radio buttons are checked
}
else
{
// one of the radio buttons is checked
}
Alles was Sie tun müssen, ist die getCheckedRadioButtonId()
- und isChecked()
-Methode,
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
Verwenden Sie die Funktion isChecked () für jeden RadioButton, den Sie überprüfen müssen.
RadioButton maleRadioButton, femaleRadioButton;
maleRadioButton = (RadioButton) findViewById(R.id.maleRadioButton);
femaleRadioButton = (RadioButton) findViewById(R.id.femaleRadioButton);
Verwenden Sie dann das Ergebnis für Ihre Wenn/Sonst-Betrachtung.
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");
}
versuchen Sie das zu benutzen
<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>
das ist Java-Klasse
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;
}
}
Ich habe die IDs meiner Radiobuttons verwendet, um mit der ID der checkedRadioButton
zu vergleichen, die ich mit mRadioGroup.getCheckedRadioButtonId()
bekam
Hier ist mein 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;}
//. . . .
}
Versuchen Sie die Methode zu verwenden isChecked ();
Mögen,
selectedRadioButton.isChecked () -> gibt einen booleschen Wert zurück.
Refere hier für weitere Details zu Radio Button
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;
}
}
});
Ich habe folgendes benutzt und es hat für mich funktioniert. Ich habe eine boolesche Validierungsfunktion verwendet, bei der, wenn ein Optionsfeld in einer Radiogruppe markiert ist, die Validierungsfunktion true zurückgibt und eine Übermittlung erfolgt. Wenn false zurückgegeben wird, wird keine Eingabe gemacht und ein Toast auf "Select Gender" wird angezeigt:
Hauptaktivität.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>
Wenn kein Optionsfeld "Geschlecht" ausgewählt ist, wird der Code zum Fortfahren nicht ausgeführt.
Ich hoffe das hilft.
Meine Antwort ist nach der Dokumentation , die gut funktioniert.
1) In der XML-Datei enthalten Sie Android:onClick="onRadioButtonClicked"
wie folgt:
<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) Implementieren Sie in der Java-Datei die onRadioButtonClicked
-Methode außerhalb der onCreate()
-Methode wie folgt:
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;
}
}