Как получить идентификатор выбранного радио-кнопки в Android? - PullRequest
5 голосов
/ 29 ноября 2011

Я работаю над приложением викторины в Android.Мы создали страницу Select.java , которая отображает вопросы и опции (с переключателями) из базы данных sqlite.Также мы создали файл header.java для отображения кнопок, т. Е. Кнопок «назад» и «далее» для страницы Select.java.

enter image description here

Здесь нам нужно получитьвыбранный идентификатор переключателя и необходимо отправить его в класс заголовка.Потому что заголовок класса состоит из следующего действия кнопки onclick.После нажатия следующей кнопки выбранное значение переключателя должно быть сохранено в массиве списков.Мы создали переключатели в классе Select.java.Поэтому мой вопрос заключается в том, как получить идентификатор выбранного переключателя в следующем действии нажатия кнопки.Пожалуйста, помогите мне в этом.

Заранее спасибо.

Ответы [ 6 ]

7 голосов
/ 29 ноября 2011

Ваш 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();
            }
        });
4 голосов
/ 20 июня 2018

Я знаю, что это старый вопрос, но я нигде не вижу своего ответа и я нашел его более простым , чем другие ..

Итак, поехали:

int myRadioChecked;
if(radioGroup.getCheckedRadioButtonId() == findViewById(R.id.YOUR_RADIO_BUTTON).getId()) {
  /**Do Stuff*/
  //ex.: myRadioChecked = 1;
}
2 голосов
/ 02 июля 2014
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));

    }
});
0 голосов
/ 26 апреля 2019

В классе RadioGroup вы можете использовать метод getCheckedRadioButtonId ();

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

Возвращает идентификатор выбранной радиокнопки в этой группе. При пустом выборе возвращаемое значение равно -1.

0 голосов
/ 25 октября 2016

Вы можете получить идентификатор выбранной кнопки следующим this .Here

int position = group.indexOfChild(radioButton);

даст вам идентификатор. Также вы можете Toast, чтобы увидеть идентификатор, как это

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

Появится сообщение: «Идентификатор переключателя, который вы нажали, равен 0», если вы нажали первую кнопку.

0 голосов
/ 29 ноября 2011

Хммм, просто добавьте еще одну переменную-член в 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
} 

, затем в прослушивателе onclick класса Adapter сделайте следующее:

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 .. я надеюсь, что это поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...