wake-up-neo.com

Wie kann ich überprüfen, ob ein Radiobutton in einer Radiogruppe in Android eingecheckt ist?

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");
}
52
Srihari

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
}
138
Apoorv

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

14
Mehul Joisar

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");
}
7

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;
        }
    }
3
gaurav gupta

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;}
        //. . . .
    }
2
Shubhdeep Singh

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 

2
balachandarkm
  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;
            }
        }
    });
1
Malik Shahbaz

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:

  1. 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;
        }
    }
    
  2. 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.

1
profjack

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;
    }
}
0
Shivam Taneja