2012-04-27 8 views
7

Kullanıcı, düğmeyi tıklattığında hangi radyo düğmesinin seçildiğini saptaması gereken bir düğme var.getCheckedRadioButtonId() yararsız int döndürüyor?

04-27 19: her seferinde seçilen

Bu farklı bir radyo ile üç kez göndermek tıklayarak edilir: Şu anda, OnClickListener içinde aşağıya bakınız Log.v bilgi işe yaramaz bir bit dönen değildir: 24: 42,417: H/(1564) göndermek: 1094168584

04-27 19: 24: 45,048: H/göndermek (1564): 1094167752

04-27 19: 24: 47,348: H/göndermek (1564): 1094211304

Yani, hangi radioButton'un seçildiğini bilmem gerekiyor - radyo düğmesinin nesnesini almanın bir yolu var mı? Mevcut metnin yanı sıra XML'den # id'sini alabilmek istiyorum.

public void buildQuestions(JSONObject question) throws JSONException { 

    radioGroup = (RadioGroup) questionBox.findViewById(R.id.responseRadioGroup); 

    Button chartsButton = (Button) questionBox.findViewById(R.id.chartsButton); 
    chartsButton.setTag(question); 
    Button submitButton = (Button) questionBox.findViewById(R.id.submitButton); 

    chartsButton.setOnClickListener(chartsListener); 
    submitButton.setOnClickListener(submitListener); 

    TagObj tagObj = new TagObj(question, radioGroup); 
    submitButton.setTag(tagObj); 

} 

public OnClickListener submitListener = new OnClickListener() { 
    public void onClick(View v) { 
     userFunctions = new UserFunctions(); 
     if (userFunctions.isUserLoggedIn(activity)) { 
      TagObj tagObject = (TagObj) v.getTag(); 
      RadioGroup radioGroup = tagObject.getRadioGroup(); 
      JSONObject question = tagObject.getQuestion(); 

      Log.v("submit", Integer.toString(radioGroup.getCheckedRadioButtonId())); 
      SubmitTask submitTask = new SubmitTask((Polling) activity, question); 
      submitTask.execute(); 

     } 
    } 
}; 

cevap

19

getCheckedRadioButtonId()RadioButton (hayır RadioButtons işaretli ise ya -1) ait id döndürür Radiogroup kontrol edilir:

İlgili kod İşte. Daha sonra,

//field in the class 
private static final int RB1_ID = 1000;//first radio button id 
private static final int RB2_ID = 1001;//second radio button id 
private static final int RB3_ID = 1002;//third radio button id 

//create the RadioButton 
RadioButton rb1 = new RadioButton(this); 
//set an id 
rb1.setId(RB1_ID); 


    int btn = radioGroup.getCheckedRadioButtonId(); 
    switch (btn) { 
    case RB1_ID: 
     // the first RadioButton is checked. 
    break; 
     //other checks for the other RadioButtons ids from the RadioGroup 
    case -1: 
     // no RadioButton is checked inthe Radiogroup 
    break; 
    } 
+2

Telsiz düğmelerim programatiktir - XML ​​sayaç bölümleri yoktur. Bunu hala yapmanın bir yolu var mı? – Davek804

+4

@ Davek804 Elbette. 'RadioButtons' oluşturduğunuzda, bunları setId() 'ile farklı kimliklere ayarlayın. Daha sonra, cevabımdaki anahtar ifadesinde, 'R.id.radio_button1' yerine kimlik olarak atadığınız numaraları kullanın. Cevabımı düzenledim. – Luksprog

+0

Mükemmel, her şey hazır! Teşekkürler. – Davek804

2

mağaza kontrol Kimliği her düğmenin karşılaştırın: Eğer düzeninde RadioButons için ayrı kimlikleri ayarlarsanız o zaman bir kontrol edilir görmek için yöntemin dönüş olanlar kimlikleri eşleştirmeye çalışır bir anahtar deyimi veya if-else zincirleri kullanarak radioButton.getID() işlevini kullanma