2012-04-27 11 views
7

मैं एक बटन के onClickListener पता लगाने के लिए जो radiobutton जब उपयोगकर्ता बटन पर क्लिक करता चुना गया था की जरूरत है कि है।getCheckedRadioButtonId() बेकार पूर्णांक लौटने?

04-27 19:

यह एक अलग रेडियो के साथ तीन बार सबमिट करें क्लिक किया जाता है हर बार चयनित: वर्तमान में, Log.v आप onClickListener में नीचे देखें जानकारी का एक बेकार सा नहीं लौटा रहा है: 24: 42.417: वी/प्रस्तुत (1564): 1094168584

04-27 19: 24: 45.048: वी/प्रस्तुत (1564): 1094167752

04-27 19: 24: 47.348: वी/प्रस्तुत (1564): 1094211304

तो, मुझे पता है कि जो radiobutton वास्तव में चयन किया जाता है की जरूरत है - वहाँ एक रास्ता radiobutton की वस्तु प्राप्त करने के लिए है? मैं एक्सएमएल से इसके आईडी # के साथ-साथ इसके वर्तमान टेक्स्ट को प्राप्त करने में सक्षम होना चाहता हूं।

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

     } 
    } 
}; 

उत्तर

19

getCheckedRadioButtonId() रिटर्न RadioButton (या -1 अगर कोई RadioButtons जाँच कर रहे हैं) के id कि Radiogroup में चेक किया गया है:

यहाँ प्रासंगिक कोड है।

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

मेरे रेडियो बटन कार्यक्रम संबंधी हैं - वे एक्सएमएल सहकर्मियों के जरूरत नहीं है। क्या ऐसा करने का कोई तरीका है? – Davek804

+4

@ डेवके 804 बेशक। जब आप 'रेडियोबटन' बनाते हैं तो उन्हें 'setId() 'के साथ अलग-अलग आईडी सेट करते हैं। फिर मेरे उत्तर से स्विच स्टेटमेंट में उन नंबरों का उपयोग करें जिन्हें आप 'R.id.radio_button1' के बजाय आईडी के रूप में निर्दिष्ट करते हैं। मैंने अपना जवाब संपादित कर लिया है। – Luksprog

+0

उत्कृष्ट, सभी सेट अप! धन्यवाद। – Davek804

2

दुकान जाँच की आईडी, तो प्रत्येक बटन के साथ उसकी तुलना: आप लेआउट में RadioButons के लिए अलग आईडी सेट करते हैं तो आप विधि की वापसी के साथ उन लोगों के आईडी से मेल करने को देखने के लिए जो एक चेक किया गया है की कोशिश करेंगे समारोह radioButton.getID) का उपयोग कर (एक स्विच कथन का उपयोग या यदि-किसी और चेन

संबंधित मुद्दे