Radyo grubunda varsayılan olarak işaretlenen radyo düğmesi nasıl ayarlanır?


132

Aşağıdaki gibi RadioGroupve RadioButtondinamik olarak oluşturdum :

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

Burada adım radioBtn2.setChecked(true);nedenleri radioBtn2her zaman kontrol edilir. Bu, radioBtn2diğer iki radyo düğmesini ( radioBtn1, radioBtn3) işaretleyerek işareti kaldıramayacağım anlamına gelir . Bunun RadioGroupbir seferde yalnızca bir radyo düğmesini kontrol edebilmesini sağlamak istiyorum (Artık aynı anda iki radyo düğmesini kontrol edebilir).

Bu sorunu nasıl çözebilirim?


dinamik olarak ihtiyacınız var mı ???
vk hooda

Yanıtlar:


218

radyo grubundaki radyo düğmesini şu şekilde kontrol etmelisiniz:

radiogroup.check(IdOfYourButton)

Elbette önce radyo düğmelerinize bir kimlik belirlemelisiniz

DÜZENLEME: unuttum, radioButton.getId()işe yarıyor, thx Ramesh

EDIT2:

android:checkedButton="@+id/my_radiobtn"

radiogroup xml'de çalışır


39
veya kimliğinizi tanımlamak istemiyorsanız RadioButtonve dizini biliyorsanız ((RadioButton) radioGroup.getChildAt (INDEX)) setChecked (true);
Ahmad Kayyali

17
Bunu yapmamalısın. Bu, bu soruda açıklanan "setChecked" sorununa neden olacaktır. Elbette bunu düğmeleriniz olmadan yapmanın yolları var, ancak lütfen setChecked() Tek yol radiogroup.check(((RadioButton)radioGroup.getChildAt(INDEX)).getId())veya bunun gibi bir şey kullanarak yapmayın
Sprigg

1
group.check (button.getId ())
tom

1
Bunu şu şekilde yapmalıydım: radioGroup.Check(radioGroup.GetChildAt(0).Id);Xamarin.Android kullanıcıları için
Mario Galván

112

Xml öznitelik için durumunda onun android:checkedButtonalır idait RadioButtonkontrol edilecek.

<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>

51

XML dosyasında belirlenen android:checkedButtonGözlerinde farklı alanını RadioGroupda temerrüt kimlikli, RadioButton:

<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>

20
    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());

6
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);

Önemli setChecked()olan, radyo grubuna tüm radyo düğmeleri eklendikten sonra kullanmaktır . O zaman radioGroup.check(radioBtn2.getId())gerekli değil
Hartmut Pfitzinger

3

Meslektaşımın kodunda da aynı sorun vardı. Bu, Radyo Grubunuz Radyo Düğmelerinizle doğru şekilde ayarlanmadığı için duyulur. Radyo düğmelerini birden çok seçebilmenizin nedeni budur. Pek çok şey denedim, sonunda aslında yanlış olan ama iyi çalışan bir numara yaptım.

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

Burada, mevcut radyo düğmelerini kontrol eden ve yeni tıklanan hariç her birinin seçimini kaldıran bir döngü için bir tane ayarladım. dene.



0

Bu bir RadioGroup hatası

RadioButton radioBtn2 = new RadioButton(context);

viewId içermeyen radioBtn2 ve generateViewId onChildViewAdded () içinde

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

yani, önce radioGroup.addView (radioBtn2), sonra radioBtn2.setChecked (true);

Bunun gibi:

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.