android - getCheckedRadioButtonId() 返回无用的 int?

标签 android android-layout onclick

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

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

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() 返回 RadioButtonid(如果没有 RadioButtons,则返回 -1 已选中)在 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;
    }

关于android - getCheckedRadioButtonId() 返回无用的 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10356733/

相关文章:

java - 如何使用 Intent 打开电子邮件应用程序

javascript - 将点击事件与具有 onClick 属性值的元素绑定(bind)

android - FileObserver 不工作 android 4.4.3

android - 我的 android 动画时间有什么问题?

android - 布局错误 :106 width:0 ellipsizedWidth:0

android - 在使用 selectableItemBackground 属性时为按钮背景使用自定义颜色

android - Superpowered:无法让 TimeStretching 正常工作,输出声音失真

android - 在android上不使用 map 对象的附近地点列表

android - 在 Ubuntu 上安装 Calabash Android 时无法构建 gem native 扩展

javascript - onclick返回和javascript