2012-04-27 5 views
7

У меня есть кнопка onClickListener, которая должна определять, какой радиатор был выбран, когда пользователь нажимает кнопку. В настоящее время Log.v вы видите ниже, в onClickListener не возвращаю бесполезные немного информации:getCheckedRadioButtonId() возвращает бесполезный int?

Это щелкает представить три раза с разным радио выбранной каждый раз:

04-27 19: 24: 42,417: V/подать (1564): 1094168584

04-27 19: 24: 45,048: V/подать (1564): 1094167752

04-27 19: 24: 47,348: V/подать (1564): 1094211304

Итак, мне нужно знать, какой radioButton действительно выбран - есть ли способ получить объект радиобуйта? Я хочу, чтобы получить его id # из XML, а также его текущий текст.

Вот соответствующий код:

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() возвращает id в RadioButton (или -1 если нет RadioButtons не проверено), что проверяется в Radiogroup. Если установить различные идентификаторы к RadioButons в макете, то вы будете стараться, чтобы соответствовать этим идентификаторам с возвращением методы, чтобы увидеть, какой из них проверяются:

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

Мои переключатели программны - у них нет элементов счетчика XML. Есть ли способ сделать это еще? – Davek804

+4

@ Davek804 Конечно. Когда вы создаете 'RadioButtons', установите для них различные идентификаторы с помощью' setId() '. Затем в инструкции switch из моего ответа используйте числа, которые вы назначаете как идентификаторы вместо 'R.id.radio_button1'. Я отредактировал свой ответ. – Luksprog

+0

Отлично, все настроено! Благодарю. – Davek804

2

магазин проверенного ID, а затем сравнить его с каждой кнопкой используя функцию radioButton.getID() с помощью оператора switch или цепочки if-else

Смежные вопросы