如何在Android中获取所选单选按钮的ID?

时间:2011-11-29 07:04:58

标签: android

我正在研究android中的测验应用程序。我们创建了 Select.java 页面,该页面显示了sqlite数据库中的问题和选项(带单选按钮)。我们还创建了一个 header.java 文件,用于显示按钮,即Select.java页面的后退和下一个按钮。

enter image description here

这里我们需要获取所选的单选按钮ID并需要将其发送到Header类。因为标题类包含下一个按钮onclick动作。单击下一个按钮后,所选的单选按钮值必须存储在arraylist中。我们在Select.java类中创建了单选按钮。所以我的问题是如何将选定的单选按钮ID转换为下一个按钮单击操作。请帮我解决这个问题。

先谢谢。

7 个答案:

答案 0 :(得分:7)

您的布局xml文件应该是这样的

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <RadioGroup 
    android:orientation="vertical"
    android:id="@+id/radiogroup"
     android:layout_width="wrap_content"
  android:layout_height="wrap_content"
    >
    <RadioButton 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/option1"
       android:text="Option1"
    />
    <RadioButton 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/option2"
       android:text="Option2"
    />
    <RadioButton 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/option3"
       android:text="Option3"
    />
    <RadioButton 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/option4"
       android:text="Option4"
    />
    <RadioButton 
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/option5"
       android:text="Option5"
    />
    </RadioGroup>
</LinearLayout>

在您的活动中添加以下颂歌

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) 
            {
                RadioButton checkedRadioButton = (RadioButton) findViewById(checkedId);
                String text = checkedRadioButton.getText().toString();
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
            }
        });

答案 1 :(得分:3)

我知道这是一个老问题,但是我在任何地方都看不到我的答案,并且我发现它比其他答案更简单

所以我们开始:

int myRadioChecked;
if(radioGroup.getCheckedRadioButtonId() == findViewById(R.id.YOUR_RADIO_BUTTON).getId()) {
  /**Do Stuff*/
  //ex.: myRadioChecked = 1;
}

答案 2 :(得分:2)

final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.MyRadioGroup);

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup arg0, int arg1) {
        int selectedId = radioGroup.getCheckedRadioButtonId();
        Log.i("ID", String.valueOf(selectedId));

    }
});

答案 3 :(得分:0)

嗯,只需在UserBO中再添加一个成员变量来存储选定的答案。

Class UserBO {

private int userID;
private String userName;
private String question;
private String option1;
private String option2;
private String option3;

private int answerID;

//create getter and setters for above member variables
} 

然后在Adapter类的onclick监听器中,执行如下操作

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup radioGroup,
                int radioButtonID) {
        switch(radioButtonID) {
                case R.id.option1:
                       listItem.setAnswerID(1);
            break;
        case R.id.option2:
                listItem.setAnswerID(2);
            break;

                 }
        }
    });

然后更改您的标头构造函数以接收userarraylist(其中包含用户详细信息和答案)

ArrayList<USerBO> userList;
Header(Context context, AttributeSet attrs, ArrayList<UserBO> userALt) {
userList = userAL;
}

//on next button click

onclick() {
    for(UserBO userObj: userList) {
        if (userObj.getAnswerID != 0)
         Log.d("AnswerID", userObj.getAnswerID);
    }
}

它就像sudo代码..我希望这会对你有所帮助..

答案 4 :(得分:0)

您可以通过以下this获取所选按钮的ID。这里

int position = group.indexOfChild(radioButton);

会给你id。也可以Toast看到这样的id

 Toast.makeText(MainActivity.this,"Id of radio button"+position+, Toast.LENGTH_SHORT).show();

这会弹出 - &#34;您点击的单选按钮的ID为0&#34;如果你点击第一个按钮。

答案 5 :(得分:0)

在RadioGroup类中,可以使用方法getCheckedRadioButtonId();

  

RadioGroup rg = findViewById(R.id.radioGroup); rg.getCheckedRadioButtonId();

返回该组中所选单选按钮的标识符。空选择时,返回值为-1。

答案 6 :(得分:-1)

这是最好的方法:

RadioButton button = findViewById(v.getId());