2011-01-12 28 views
11

Kod ... {Dinamik Radyo Düğmesi Kontrolü

private void createRadioButton() { 

     final RadioButton[] rb = new RadioButton[5]; 
     for(int i=0; i<5; i++){ 
      rb[i] = new RadioButton(this); 
      ll.addView(rb[i]); 
      rb[i].setText("Test"); 
     } 
     ll.addView(submit); 
      submit.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       for(int i = 0; i < 5; i++) { 
        ll.removeView(rb[i]); 
       } 
       ll.removeView(submit); 
       Questions(); 
     }}); 
    } 

i yaşıyorum sorunu radyo düğmeleri görünür ve kullanıcı herhangi birini seçebilirsiniz olmasıdır. Yeni başlayan biri olmak için radyo düğmelerini doğru şekilde ayarlamadım. Kullanıcı beş düğmenin tümünü seçebilir ve seçildikten sonra bunların işaretini kaldıramaz. Kullanıcı beşten sadece bir seçeneği seçebilmelidir ... bunu nasıl mümkün yapabilirim?

cevap

16

Sen

özlediğim düzene bir RadioGroup için radyo düğmelerini ekleyin ve sonra RadioGroup gerekir göndermek olmakla kodunuz nasıl görünmesi gerektiği gibi bazı bilgiler: Yapmalisin

private void createRadioButton() { 
    final RadioButton[] rb = new RadioButton[5]; 
    RadioGroup rg = new RadioGroup(this); //create the RadioGroup 
    rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL 
    for(int i=0; i<5; i++){ 
     rb[i] = new RadioButton(this); 
     rg.addView(rb[i]); //the RadioButtons are added to the radioGroup instead of the layout 
     rb[i].setText("Test"); 
    } 
    ll.addView(rg);//you add the whole RadioGroup to the layout 
    ll.addView(submit); 
    submit.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      for(int i = 0; i < 5; i++) { 
       rg.removeView(rb[i]);//now the RadioButtons are in the RadioGroup 
      } 
      ll.removeView(submit); 
      Questions(); 
     } 
    }); 
} 
+0

: nasıl kimlik eklenir? –

+1

@ShahzadImam setId() hakkında ne dersiniz? – spaaarky21

+0

@ spaaarky21: Bir yıl önce çözüldü .. thanx. –

4

buna düzen dosyasında

<TableRow> 
    <RadioGroup 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:id="@+id/radiobuttons"> 
    </RadioGroup> 
</TableRow> 

ve sonra program eklemek düğmeleri bir RadioGroup oluşturun:

public void makeRadioButtons(Vector tmpVector, int i, 
LinearLayout.LayoutParams lp) 
{ 
    RadioButton rb = new RadioButton(this); 
    rb.setText((String) tmpVector.elementAt(i)); 
    //rg is private member of class which refers to the radio group which you can find by id. 
    rg.addView(rb, 0, lp); 

} 

Bu yardımcı olur umarım.

+0

xml kullanmıyorum çünkü uygulama tarafından oluşturulan 1,2 veya 15 düğme olabileceğinden bu düğmeleri dinamik olarak yapmam gerekiyor. – Beginner

+0

Radyo düğmelerinin veya gruplarının şu anda nasıl çalıştığından emin değilim. Düğmeyi gruba ekledikten sonra grubu görüntülüyor muyum? – Beginner

+0

@Usmaan: Evet önce gruba grup ekle ve ardından tüm grubu göster. Referans için: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/RadioGroup1.html –

3

Düzeniniz.

<LinearLayout 
    android:id="@+id/linearMain" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    > 
    <RadioGroup 
     android:id="@+id/radiogroup" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
    > 
    </RadioGroup> 
</LinearLayout> 

kod

RadioGroup rg = (RadioGroup) findViewById(R.id.radiogroup);//not this RadioGroup rg = new RadioGroup(this); 
rg.setOrientation(RadioGroup.HORIZONTAL);//or RadioGroup.VERTICAL 
    for(int i=0; i<5; i++) 
    { 
     rb[i] = new RadioButton(this); 
     rg.addView(rb[i]); 
     rb[i].setText("Test"); 
    } 

umut bu yardım edeceğim.