getCheckedRadioButtonId()返回无用的int?

Dav*_*804 13 android onclick android-layout

我有一个按钮的onClickListener,需要检测用户单击按钮时选择了哪个单选按钮.目前,您在onClickListener中看到的Log.v没有返回无用的信息:

这是点击提交三次,每次选择不同的电台:

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

所以,我需要知道实际选择了哪个radioButton - 有没有办法获得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();

        }
    }   
};
Run Code Online (Sandbox Code Playgroud)

Luk*_*rog 25

getCheckedRadioButtonId()返回在中检查idRadioButton(或者-1如果没有RadioButtons选中)Radiogroup.如果您RadioButons在布局中设置了不同的ID,那么您将尝试将这些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;
    }
Run Code Online (Sandbox Code Playgroud)

  • @ Davek804当然.当你创建`RadioButtons`时,用`setId()`设置不同的id.然后在我的回答的switch语句中使用你指定为id的数字而不是`R.id.radio_button1`.我编辑了我的答案. (4认同)
  • 我的单选按钮是程序化的 - 它们没有XML计数器部件.还有办法做到这一点吗? (2认同)