1. ホーム
  2. android

[解決済み】getCheckedRadioButtonId()が無駄なintを返す?

2022-02-21 07:41:12

質問

ボタンのonClickListenerで、ユーザーがボタンをクリックしたときに、どのradiobuttonが選択されたかを検出する必要があります。現在、onClickListenerの下に表示されているLog.vは、役に立たない情報を返してくれません。

これは、毎回異なるラジオが選択されている状態で、3回送信をクリックしています。

04-27 19:24:42.417: V/submit(1564): 1094168584

04-27 19:24:45.048: V/submit(1564): 1094167752

04-27 19:24:47.348: V/submit(1564): 1094211304

そこで、どのラジオボタンが実際に選択されているかを知る必要があるのですが、ラジオボタンのオブジェクトを取得する方法はあるのでしょうか?現在のテキストと同様に、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();

        }
    }   
};

解決方法は?

getCheckedRadioButtonId() が返されます。 idRadioButton (または -1 がない場合は RadioButtons がチェックされている)でチェックされている Radiogroup . もし、個別の ID を RadioButons を使用すると、これらの ID とメソッドの戻り値をマッチさせて、どれがチェックされたかを確認することができます。

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