Почему мой ответ отображается как правильный, если я установил все флажки? - PullRequest
0 голосов
/ 15 марта 2019

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

            if(result1 == firstQuestion.getCorrectAnswer() && result2 == firstQuestion.getSecondCorrectAnswer()){
                    currentScore = currentScore + 1 + userScore;
                    Intent i = new Intent(CheckBoxQuestions.this, ResultScreen.class);
                    i.putExtra("finalScore",currentScore);
                    startActivity(i);

                }else{
                    Toast.makeText(CheckBoxQuestions.this, "Incorrect", Toast.LENGTH_SHORT).show();
                    currentScore = currentScore + 0 + userScore;
                    Intent i = new Intent(CheckBoxQuestions.this, ResultScreen.class);
                    i.putExtra("finalScore",currentScore);
                    startActivity(i);

                }




        }
    });

} 

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

Вы должны использовать RadioGroup и RadioButton, как указано ниже, это позволит вам выбрать только одну радиокнопку, то есть только один ответ.Радиокнопки будут в одной радиогруппе.

<RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:text="Radio Button 1"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Radio Button 2"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Radio Button 3"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Radio Button 4"/>

</RadioGroup>
0 голосов
/ 15 марта 2019

Одним из элегантных решений было бы использование группы кнопок, чтобы разрешить только один выбор, если это возможно в контексте вашей проблемы.Если пользователь должен иметь возможность выбирать разные решения (может быть несколько правильных ответов), то вам, вероятно, следует инвертировать тест.Это тест, который пользователь не ответил неправильно.

Чтобы показать последнее с кодом:

if(isCorrectAnswers(firstQuestion) && !hasIncorrectAnswer(firstQuestion)) {
    ... // React for correct answer
} else {
    ... // React for incorrect answer
}

с

private boolean isCorrectAnswers(AnswerSelectionChoice choice) {
    return choice.isSelectedCorrectChoice() && isSelectedSecondCorrectChoice() && ...;
}

и

private boolean hasIncorrectAnswer(AnswerSelectionChoice choice) {
    return choice.isSelectedIncorrectChoice() || isSelectedSecondIncorrectChoice() || ...;
}
0 голосов
/ 15 марта 2019

Вы сравниваете результат, представляющий собой строку с ==.Операция == сравнивает ссылки двух объектов (или значений для примитива).Поскольку строки являются объектами, == не рекомендуется для сравнения символов.Вместо этого используйте метод .equals().<String>.equals(<other String>) Метод .equals(), определенный в Object, совпадает с ==.Тем не менее, многие объекты, такие как строки, переопределяют .equals() В случае строк, сравнивать символ за символом.

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