web-dev-qa-db-de.com

So erhalten Sie den ausgewählten Index einer RadioGroup in Android

Gibt es eine einfache Möglichkeit, den ausgewählten Index einer RadioGroup in Android abzurufen, oder muss ich OnCheckedChangeListener verwenden, um nach Änderungen zu suchen und etwas zu haben, das den zuletzt ausgewählten Index enthält?

beispiel xml:

<RadioGroup Android:id="@+id/group1" Android:layout_width="fill_parent" Android:layout_height="wrap_content" Android:orientation="vertical">
    <RadioButton Android:id="@+id/radio1" Android:text="option 1" Android:layout_width="wrap_content" Android:layout_height="wrap_content" />
    <RadioButton Android:id="@+id/radio2" Android:text="option 2" Android:layout_width="wrap_content" Android:layout_height="wrap_content" />
    <RadioButton Android:id="@+id/radio3" Android:text="option 3" Android:layout_width="wrap_content" Android:layout_height="wrap_content" />
    <RadioButton Android:id="@+id/radio4" Android:text="option 4" Android:layout_width="wrap_content" Android:layout_height="wrap_content" />
    <RadioButton Android:id="@+id/radio5" Android:text="option 5" Android:layout_width="wrap_content" Android:layout_height="wrap_content" />
</RadioGroup>

wenn ein Benutzer option 3 auswählt, möchte ich den Index erhalten. 2.

194
John Boker

Sie sollten in der Lage sein, so etwas zu tun:

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

Wenn die RadioGroup andere Views enthält (wie eine TextView), gibt die indexOfChild() -Methode einen falschen Index zurück.

So rufen Sie den ausgewählten RadioButton Text auf dem RadioGroup ab:

 RadioButton r = (RadioButton) radioButtonGroup.getChildAt(idx);
 String selectedtext = r.getText().toString();
455
BP.

Das sollte funktionieren,

int index = myRadioGroup.indexOfChild(findViewById(myRadioGroup.getCheckedRadioButtonId()));
106
source.rar

Sie könnten einen Verweis auf die Radiogruppe haben und getCheckedRadioButtonId () verwenden, um die aktivierte Optionsfeld-ID abzurufen. Schau mal hier

RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radio_group);

Dann, wenn Sie die ausgewählte Radio-Option benötigen.

int checkedRadioButtonId = radioGroup.getCheckedRadioButtonId();
if (checkedRadioButtonId == -1) {
    // No item selected
}
else{
    if (checkedRadioButtonId == R.id.radio_button1) {
        // Do something with the button
    }
}
56
Stefan Bossbaly

versuche dies

        RadioGroup  group= (RadioGroup) getView().findViewById(R.id.radioGroup);
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                View radioButton = radioGroup.findViewById(i);
                int index = radioGroup.indexOfChild(radioButton);
            }
        });
23
Nooh

Sie können entweder OnCheckedChangeListener oder getCheckedRadioButtonId () verwenden

10
ingsaurabh

Sie können verwenden:

RadioButton rb = (RadioButton) findViewById(rg.getCheckedRadioButtonId());
9
Marco Fantasia

Auf diese Weise hat es bei mir perfekt funktioniert:

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
    int radioButtonID = radioGroup.getCheckedRadioButtonId();
    RadioButton radioButton = (RadioButton) radioGroup.findViewById(radioButtonID);
    String selectedtext = (String) radioButton.getText();
6
Shinz6

// verwenden, um die ID des ausgewählten Elements abzurufen

int selectedID = myRadioGroup.getCheckedRadioButtonId();

// Die Ansicht des ausgewählten Elements abrufen

View selectedView = (View)findViewById( selectedID);
6
Jhoe-mar Pagao
radioSexGroup=(RadioGroup)findViewById(R.id.radioGroup);

  btnDisplay=(Button)findViewById(R.id.button);

  btnDisplay.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        int selectedId=radioSexGroup.getCheckedRadioButtonId();
        radioSexButton=(RadioButton)findViewById(selectedId);
        Toast.makeText(MainActivity.this,radioSexButton.getText(),Toast.LENGTH_SHORT).show();
     }
  });
5
Vikash Sharma

Sie müssen lediglich zuerst die Werte für Ihren RadioButton einstellen, zum Beispiel:

RadioButton radioButton = (RadioButton)findViewById(R.id.radioButton);      
radioButton.setId(1);        //some int value

und wann immer dieses räumliche radioButton ausgewählt wird, können Sie seinen Wert anhand der ID ermitteln, mit der Sie ihn angegeben haben

RadioGroup radioGroup = (RadioGroup)findViewById(R.id.radioGroup);                     
int whichIndex = radioGroup.getCheckedRadioButtonId(); //of course the radioButton
                                                       //should be inside the "radioGroup"
                                                       //in the XML

Prost!

5
ravid rinek
 int index_selected = radio_grp.indexOfChild(radio_grp
                .findViewById(radio_grp.getCheckedRadioButtonId()));

Sie können einfach

-Deklarieren Sie die Radiogruppe und ein Optionsfeld aus der onCreate-Methode

private RadioGroup GrupName;
private RadioButton NameButton;

-Stellen Sie die Ansichts-ID in der onCreate-Methode ein

GrupName = (RadioGroup) findViewById(R.id.radioGroupid);

-Nehmen Sie die mit ausgewählte Radiobutton-ID

int id = GroupName.getCheckedRadioButtonId();

-Verwenden Sie die ID, um sie der ausgewählten Ansicht der Schaltflächen anzupassen

NameButton = (RadioButton) findViewById(id);

-abschließend den Wert des Optionsfelds abrufen

String valueExpected = NameButton.getText().toString();

--- PS: WENN SIE EINEN INT. WERT WOLLEN, KÖNNEN SIE ES GIESSEN

int valueExpectedIn = Integer.parseInt(valueExpected);
1
Andrea Gurioli

benutze einfach folgendes:

    int index = 2;
    boolean option3Checked = radioGroup.getCheckedRadioButtonId() == radioGroup.getChildAt(2).getId();
1
MADWolfHD

du kannst tun

findViewById

von der Radiogruppe.

Hier ist es Beispiel:

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);
1
Faheem