Stworzyłem RadioGroup
i RadioButton
dynamicznie:
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);
Tutaj radioBtn2.setChecked(true);
przyczyny radioBtn2
zawsze sprawdzane. Oznacza to, że nie mogę odznaczyć radioBtn2
, zaznaczając pozostałe dwa przyciski opcji ( radioBtn1
, radioBtn3
). Chcę, żeby to RadioGroup
mogło sprawdzać tylko jeden przycisk radiowy na raz (teraz może sprawdzać dwa radiobutton na raz).
Jak mogę rozwiązać ten problem?
android
radio-button
radio-group
Piaszczysty
źródło
źródło
Odpowiedzi:
powinieneś sprawdzić radiobutton w grupie radiowej w ten sposób:
radiogroup.check(IdOfYourButton)
Oczywiście najpierw musisz ustawić identyfikator dla swoich radiobuttons
EDYCJA: zapomniałem,
radioButton.getId()
działa, dzięki RameshEDYCJA2:
działa w radiogroup xml
źródło
RadioButton
i znasz indeks, możesz użyć ((RadioButton) radioGroup.getChildAt (INDEX)). setChecked (true);setChecked()
One wayradiogroup.check(((RadioButton)radioGroup.getChildAt(INDEX)).getId())
lub czegoś podobnegoradioGroup.Check(radioGroup.GetChildAt(0).Id);
dla użytkowników Xamarin.AndroidW przypadku atrybutu xml,
android:checkedButton
który przyjmujeid
elementRadioButton
do sprawdzenia.<RadioGroup ... ... android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked" ... >....</RadioGroup>
źródło
W pliku XML ustaw
android:checkedButton
pole w swoimRadioGroup
, z domyślnym identyfikatoremRadioButton
:<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>
źródło
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());
źródło
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);
źródło
setChecked()
po dodaniu wszystkich przycisków opcji do grupy radiowej. WtedyradioGroup.check(radioBtn2.getId())
nie jest to konieczneW kodzie mojego kolegi był ten sam problem. To brzmi, ponieważ twoja grupa radiowa nie jest poprawnie ustawiona za pomocą przycisków radiowych. To jest powód, dla którego możesz wybrać wiele przycisków opcji. Próbowałem wielu rzeczy, w końcu zrobiłem sztuczkę, która w rzeczywistości jest niewłaściwa, ale działa dobrze.
for ( int i = 0 ; i < myCount ; i++ ) { if ( i != k ) { System.out.println ( "i = " + i ); radio1[i].setChecked(false); } }
Tutaj ustawiłem pętlę dla pętli, która sprawdza dostępne przyciski radiowe i odznacza każdy z wyjątkiem nowo klikniętego. Spróbuj.
źródło
Dodaj
android:checked = "true"
swój plik activity.xmlźródło
To błąd RadioGroup
RadioButton radioBtn2 = new RadioButton(context);
radioBtn2 bez viewId, a generatedViewId jest w 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); } }
więc najpierw radioGroup.addView (radioBtn2), potem radioBtn2.setChecked (true);
Lubię to:
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);
źródło