wake-up-neo.net

wie wird das Optionsfeld in der Radiogruppe unter Android aktiviert?

Ich habe RadioGroup und RadioButton dynamisch wie folgt erstellt

RadioGroup radioGroup = new RadioGroup(context);
                    RadioButton radioBtn1 = new RadioButton(context);
                    RadioButton radioBtn2 = new RadioButton(context);
                    RadioButton radioBtn3 = new RadioButton(context);

                    radioBtn1.setText("Less");
                    radioBtn2.setText("Normal");
                    radioBtn3.setText("More");

                    radioBtn2.setChecked(true);

                    radioGroup.addView(radioBtn1);
                    radioGroup.addView(radioBtn2);
                    radioGroup.addView(radioBtn3);

Hier bewirkt Schritt radioBtn2.setChecked(true);, dass radioBtn2 immer geprüft wird. Das heißt, ich kann radioBtn2 nicht deaktivieren, indem ich zwei andere Optionsfelder (radioBtn1, radioBtn3) ankreuze. Ich möchte, dass RadioGroup jeweils nur einen Radioknopf prüfen kann (jetzt können zwei Radiobuttons gleichzeitig geprüft werden). Wie kann ich dieses Problem lösen?

118
Sandy

sie sollten den Radiobutton in der Radiogruppe folgendermaßen überprüfen:

radiogroup.check(IdOfYourButton)

Natürlich müssen Sie zuerst eine ID für Ihre Radiobuttons festlegen

EDIT: Ich habe vergessen, radioButton.getId() funktioniert auch, danke Ramesh

EDIT2:

Android:checkedButton="@+id/my_radiobtn"

funktioniert in der Radiogruppe xml

199
Sprigg

Im Falle eines XML-Attributs dessen Android:checkedButton, um die id der RadioButton zu prüfen.

<RadioGroup
...
...
Android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>
106
IronBlossom

Setzen Sie in der XML-Datei das Feld Android:checkedButton in Ihrer RadioGroup mit der ID Ihrer StandardvariablenRadioButton

<RadioGroup
    ....
    Android:checkedButton="@+id/button_1">

    <RadioButton
        Android:id="@+id/button_1"
        ...../>

    <RadioButton
        Android:id="@+id/button_2"
        ...../>

    <RadioButton
        Android:id="@+id/button_3"
        ...../>
</RadioGroup>
48
Sara
    RadioGroup radioGroup = new RadioGroup(WvActivity.this);
    RadioButton radioBtn1 = new RadioButton(this);
    RadioButton radioBtn2 = new RadioButton(this);
    RadioButton radioBtn3 = new RadioButton(this);

    radioBtn1.setText("Less");
    radioBtn2.setText("Normal");
    radioBtn3.setText("More");


    radioGroup.addView(radioBtn1);
    radioGroup.addView(radioBtn2);
    radioGroup.addView(radioBtn3);

    radioGroup.check(radioBtn2.getId());
19
Ramesh Solanki
RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);

radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");

radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
radioBtn2.setChecked(true);
6
Anuj Oscar

Es gab das gleiche Problem im Code meines Kollegen. Dies ertönt, da Ihre Funkgruppe nicht richtig mit Ihren Optionsfeldern eingestellt ist. Aus diesem Grund können Sie die Optionsfelder mehrfach auswählen. Ich habe viele Dinge ausprobiert, schließlich habe ich einen Trick gemacht, der eigentlich falsch ist, aber gut funktioniert. 

for ( int i = 0 ; i < myCount ; i++ )
{
    if ( i != k )
    {
        System.out.println ( "i = " + i );
        radio1[i].setChecked(false);
    }
}

Hier habe ich eine for-Schleife eingestellt, die nach verfügbaren Optionsfeldern sucht und die Auswahl aufhebt, außer dem neu angeklickten. Versuch es.

3
Lucifer

Fügen Sie Android:checked = "true" in Ihre activity.xml hinzu

2
Leotrim Vojvoda

Es ist ein Fehler von RadioGroup

RadioButton radioBtn2 = new RadioButton(context);

radioBtn2 ohne viewId und generateViewId befindet sich in onChildViewAdded ()

public void onChildViewAdded(View parent, View child) {
    if (parent == RadioGroup.this && child instanceof RadioButton) {
        int id = child.getId();
        // generates an id if it's missing
        if (id == View.NO_ID) {
            id = View.generateViewId();
            child.setId(id);
        }
        ((RadioButton) child).setOnCheckedChangeWidgetListener(
                mChildOnCheckedChangeListener);
    }

    if (mOnHierarchyChangeListener != null) {
        mOnHierarchyChangeListener.onChildViewAdded(parent, child);
    }
}

also zuerst radioGroup.addView (radioBtn2), dann radioBtn2.setChecked (true); 

So was:

RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);

radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");

radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);

radioBtn2.setChecked(true);
0
qinmiao