2012-04-27 3 views
7

사용자가 버튼을 클릭 할 때 어떤 라디오 버튼이 선택되었는지 감지해야하는 버튼의 onClickListener가 있습니다.getCheckedRadioButtonId()는 쓸모없는 int를 반환합니까?

04-27 19 :마다 선택

이 다른 라디오로 3 회 제출을 클릭한다 : 현재, 당신은 OnClickListener를 아래 참조 Log.v는 정보의 쓸모없는 비트를 반환하지 않습니다 : 24 : 42.417 : V/(1564)을 제출 1,094,168,584

04-27 19 : 24 : 45.048 : V는/제출 (1564)를 : 1094167752

04-27 19 : 24 : 47.348 : V가 제출/(1564) : 1094211304

그래서 radioButton이 실제로 선택되었는지 알아야합니다. 라디오 버튼의 객체를 가져 오는 방법이 있습니까? 나는 그것의 현재 텍스트뿐만 아니라 XML로부터 id #를 얻을 수 있기를 원한다.

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 (더 RadioButtons이 확인되지 않은 경우 또는 -1)의 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

라디오 버튼은 프로그래밍 방식이므로 XML 대응 부분이 없습니다. 아직도 이것을 할 수있는 방법이 있습니까? – Davek804

+4

@ Davek804 물론. 'RadioButtons'을 만들 때'setId()'를 사용하여 그것들을 다른 id로 설정하십시오. 그런 다음 switch 문에서 내 대답에서 'R.id.radio_button1' 대신 ID로 할당 한 번호를 사용하십시오. 내 대답을 편집했습니다. – Luksprog

+0

훌륭함, 모두 설치되었습니다! 감사. – Davek804

2

저장 체크 ID를 각 버튼에 비교 : 당신이 레이아웃에 RadioButons에 고유 한 ID를 설정하면 당신은 하나가 선택되는 볼 수있는 방법의 반환에 그 ID를 일치하려고합니다 switch 문을 사용하여 radioButton.getID() 함수를 사용하거나 if-else 체인을 사용합니다.

관련 문제