Как узнать, какая кнопка radiobutton была выбрана пользователем для сравнения с правильной в QuestionApp в Android

#java #android #android-studio #radio-button

#java #Android #android-studio #переключатель

Вопрос:

Здесь проблема ,

Я хочу узнать выбранную пользователем кнопку RadioButton и сравнить ее с правильной. У меня есть 3 вопроса, и его ответ находится в одном списке массивов. Когда я создаю журнал, чтобы узнать, какой из них был выбран, это вывод :

 2020-11-30 23:12:19.128 5696-5696/com.example.test1 E/Question: Where is Iran ?  Asia
2020-11-30 23:12:19.128 5696-5696/com.example.test1 E/Question: Where is Sweden ?  Europe
2020-11-30 23:12:19.128 5696-5696/com.example.test1 E/Question: Where is Mexico ?  Europe
 

Ответ на 3-й вопрос не был сохранен, а ответ на второй вопрос будет сохранен для 3-го. пожалуйста, помогите мне. что мне делать

Вот мой код вопросов :

  QuestionModel q1 = new QuestionModel();
    q1.setText("Where is Iran ?");
    q1.setOp1("Asia");
    q1.setOp2("Europe");
    q1.setOp3("America");
    q1.setOp4("Africa");
    q1.setTrue_ans("Asia");
    q1.setScore(5);
    questions.add(q1);

    QuestionModel q2 = new QuestionModel();
    q2.setText("Where is Sweden ?");
    q2.setOp1("America");
    q2.setOp2("Africa");
    q2.setOp3("Asia");
    q2.setOp4("Europe");
    q2.setTrue_ans("Europe");
    q2.setScore(3);
    questions.add(q2);

    QuestionModel q3= new QuestionModel();
    q3.setText("Where is Mexico ?");
    q3.setOp1("Africa");
    q3.setOp2("America");
    q3.setOp3("Europe");
    q3.setOp4("Asia");
    q3.setTrue_ans("America");
    q3.setScore(4);
    questions.add(q3);
 

Вот как я добрался до выбранной пользователем кнопки radiobutton :

  if (radioGp.getCheckedRadioButtonId() != -1) {
                QuestionModel model = questions.get(con);
                int id = radioGp.getCheckedRadioButtonId();
                RadioButton useranswer = findViewById(id);
                model.setUser_ans(useranswer.getText().toString());
            }
 

А вот журнал и другие вещи :

                 if (con == 2) {
                nextbtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        for (QuestionModel q : questions) {
                            Log.e("Question ", q.getText()   "  "   q.getUser_ans());
                            String user_ans = q.getUser_ans();
                            String true_ans = q.getTrue_ans();

                            if( true_ans.equals(user_ans) ) {
                                score  = q.getScore();
                            }

                        }

                        scorebox.setText(Integer.toString(score));

                    }
                });

            }
 

Ответ №1:

Чтобы сделать это как можно более простым, вот решение, на которое вы можете положиться:

 <RelativeLayout
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@ id/question_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="7dp"
            android:text="Where is Iran ?"
            android:textSize="20sp" />

        <RadioGroup
            android:layout_below="@ id/question_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:id="@ id/radioGroup">

            <RadioButton
                android:id="@ id/radio_one"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Asia"/>

            <RadioButton
                android:id="@ id/radio_two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Europe"/>

            <RadioButton
                android:id="@ id/radio_three"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="America"/>

            <RadioButton
                android:id="@ id/radio_four"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Africa"/>

        </RadioGroup>

        <TextView
            android:id="@ id/text_view_selected"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@ id/radioGroup"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="27dp"
            android:text="Your answer is: "
            android:textSize="20sp" />

        <Button
            android:id="@ id/button_apply"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@ id/text_view_selected"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="37dp"
            android:text="apply" />

    </RelativeLayout>
 

В MainActivity внутри onCreate:

 // the RadioGroup holding the radio buttons
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
// the text that will display the result
        textView = (TextView) findViewById(R.id.text_view_selected);
// the button that will check if the selected answer is correct or wrong
        Button buttonApply = (Button) findViewById(R.id.button_apply);

        buttonApply.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

// This gets the id of the selected radio button BY THE USER
        int radioId = radioGroup.getCheckedRadioButtonId();
        RadioButton selectedAnswer = (RadioButton) findViewById(radioId);
        
        // THIS IS YOUR CORRECT ANSWER
        // if the correct answer is Africa then R.id.radio_four etc
        RadioButton correctAnswerButton = (RadioButton) findViewById(R.id.radio_one);
        
        // this gets the text of your correct answer
        CharSequence correctAnswer = correctAnswerButton.getText();
        
        // NOW compare the selected answer to the correct answer
        if (selectedAnswer.getText() == correctAnswer) {
            textView.setText("Your answer is right");
        } else {
            textView.setText( "Your answer is wrong " );
        }

                }
            });
 

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Спасибо, но вы знаете, что это не только один вопрос, и у меня есть, например, 3 вопроса, поэтому я думаю, что это не решение.

2. Вы можете положиться на часть Java в соответствии с вашими потребностями