2012-04-27 8 views
7

ボタンをクリックしたときに選択されたラジオボタンを検出する必要があるボタンのonClickListenerがあります。現在、あなたはonClickListenerに以下を参照Log.vは、情報の無駄なビットを返していません。getCheckedRadioButtonId()は無駄なintを返しますか?

これは、異なる無線で三回を提出クリックされるたびに、選択:

4月27日19: 24:42.417:V /(1564)を提出:1094168584

4月27日19:24:45.048:V /(1564)を提出:1094167752

4月27日19:24:47.348:V /送信( 1564):1094211304

したがって、実際に選択されているradioButtonを知る必要があります。ラジオボタンのオブジェクトを取得する方法はありますか? XMLからid#とその現在のテキストを取得できるようにしたい。

ここに関連するコードです:(なしRadioButtonsがチェックされていない場合や-1

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()RadioButtonidを返し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を設定した場合、あなたは1つがチェックされているかを確認するために、メソッドの戻り値とそれらのIDと一致するようにしようとしますswitch文やif-elseチェーンを使用してradioButton.getID()関数を使用する

関連する問題