Ошибка, при которой переключатели по-прежнему сохраняют ответы от первого вопроса до следующих вопросов.JAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Ошибка, при которой переключатели по-прежнему сохраняют ответы от первого вопроса до следующих вопросов.

Сообщение Гость »


Я провожу тест, но возникла проблема: выбранные варианты ответа из предыдущих вопросов сохраняются в следующих вопросах. Также существует проблема, при которой все три варианта ответа могут быть выбраны одновременно. Кроме того, балл не увеличивается при выборе правильного ответа. Я не знаю, где ошибки. Пожалуйста, помогите мне, поскольку я еще новичок в программировании.

Вот несколько фрагментов кода моего приложения. Если вам нужны какие-либо другие части кода, пожалуйста, дайте мне знать. Спасибо.

Здесь QuizActivity

пакет com.example.aplikasipembelajaranbahasaternate; импортировать androidx.annotation.NonNull; импортировать androidx.appcompat.app.AlertDialog; импортировать androidx.appcompat.app.AppCompatActivity; импортировать android.content.DialogInterface; импортировать android.content.Intent; импортировать android.content.res.ColorStateList; импортировать android.graphics.Color; импортировать android.os.Bundle; импортировать android.os.CountDownTimer; импортировать android.view.View; импортировать android.widget.Button; импортировать android.widget.RadioButton; импортировать android.widget.RadioGroup; импортировать android.widget.TextView; импортировать android.widget.Toast; импортировать java.util.ArrayList; импортировать java.util.Arrays; импортировать java.util.Collection; импортировать java.util.Collections; импортировать java.util.List; импортировать java.util.Locale; импортировать java.util.Timer; публичный класс quizmateri2Activity расширяет AppCompatActivity { частный статический окончательный длинный COUNTDOWN_IN_MILLIS = 60000; общедоступная статическая окончательная строка extra_score = «extraScore»; частная статическая окончательная строка KEY_SCORE = «keyScore»; частная статическая окончательная строка KEY_QUESTION_COUNT = "keySoalCount"; частная статическая финальная строка KEY_MILLIS_LEFT = «keyMillisLeft»; частная статическая окончательная строка KEY_ANSWERED = "keyAnswered"; частная статическая окончательная строка KEY_QUESTION_LIST = "keySoalList"; частный TextView tvQuestion, tvTimer, tvScore, tvSOALCount; частный RadioButton option_1, option_2, option_3; частная RadioGroup rgAnswers; частная кнопка btnSubmit; частный ColorStateList textColorDefaultRb; частный ColorStateList textColorDefaultCd; частный CountDownTimer countDownTimer; частный долгое времяLeftInMillis; частный ArrayList вопрос2Список; частный int Вопрос-счетчик; частный int ВопросCountTotal; частные вопросы Вопрос2; частный внутренний счет; частный логический ответ; частный длинный backPressedTime; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.activity_quizmateri2); tvQuestion = (TextView) findViewById(R.id.tv_question); tvSOALCount = (TextView) findViewById(R.id.tv_JmlhSoal); option_1 = (RadioButton) findViewById(R.id.option_1); option_2 = (RadioButton) findViewById(R.id.option_2); option_3 = (RadioButton) findViewById(R.id.option_3); tvTimer = (TextView) findViewById(R.id.tv_timer); tvScore = (TextView) findViewById(R.id.tv_score); rgAnswers = (RadioGroup) findViewById(R.id.rg_answers); btnSubmit = (Кнопка) findViewById(R.id.next2); textColorDefaultRb = option_1.getTextColors(); textColorDefaultCd = tvTimer.getTextColors(); если (savedInstanceState == ноль) { вопрос2List = новый ArrayList(); вопрос2List.add(новый Вопрос2("Бахаса Тернате дари ката 'Сая' для лаки-лаки адалах...", "Фаджару", "Фангаре", "Нгом", 2)); вопрос2List.add(новый Вопрос2("Арти дари ката 'Туфа' адала...", "Лангит", "Матахари", "Аван", 1)); вопрос2List.add(новый Вопрос2("Arti dari kalimat 'Nonau se fofoeka' adalah...", "Anak-anak dan remaja", "Laki-laki dan perempuan", "Orangtua dan anak", 2)); вопрос2List.add(новый Вопрос2("Бахаса Тернате дари ката 'Манди' адала...", "Тего", "Таги", "Маходо", 3)); вопрос2List.add(новый Вопрос2("Бахаса Тернате дари ката 'Дудук' адала...", "Маходо", "Таги", "Тего", 3)); вопрос2List.add(новый Вопрос2("Арти дари ката 'Саху' адала...", "Кесил", "Панас", "Джаух", 2)); вопрос2List.add(новый Вопрос2("Бахаса Тернате дари ката 'Диа' для перемпуана адала...", "Мина", "Ана", "Уна", 1)); вопрос2List.add(новый Вопрос2("Арти дари ката 'Рага-рага' адала...", "Бетис", "Яри-джари", "Усус", 2)); вопрос2List.add(новый Вопрос2("Бахаса Тернате дари ката 'Ньяо осу' адалах...", "Икан горенг", "Икан ментах", "Икан бакар", 3)); вопрос2List.add(новый Вопрос2("Bahasa Ternate dari kalimat 'Anjing itu beranak empat ekor' adalah...", "Namo enage mangofa ngai rara", "Kaso enage mangofa ngai rara", "Kaso enage mangofa ngai rara", 2 )); ВопросCountTotal = вопрос2Список.размер(); Коллекции.shuffle(question2List); показатьСледующийВопрос(); } еще { вопрос2List = saveInstanceState.getParcelableArrayList(KEY_QUESTION_LIST); ВопросCountTotal = вопрос2Список.размер(); ВопросСчетчик = сохраненныйInstanceState.getInt(KEY_QUESTION_COUNT); вопросы = вопрос2List.get(QuestionCounter - 1); оценка = saveInstanceState.getInt(KEY_SCORE); timeLeftInMillis = saveInstanceState.getLong(KEY_MILLIS_LEFT); ответил = saveInstanceState.getBoolean(KEY_ANSWERED); если (!ответил) { НачатьВремяВниз(); } еще { updateCountDownText(); шоуРешение(); } } // Прослушиватель событий Menambahkan Pada Tombol submit btnSubmit.setOnClickListener(новый View.OnClickListener() { @Override public void onClick (Просмотр) { если (!ответил) { if (option_1.isChecked() || option_2.isChecked() || option_3.isChecked()) { Проверить ответ(); } еще { Toast.makeText(quizmateri2Activity.this, "Силахкан пилих джавабан!", Toast.LENGTH_SHORT).show(); } } еще { показатьСледующийВопрос(); } } }); } частная пустота showNextQuestion () { option_1.setTextColor(textColorDefaultRb); option_2.setTextColor(textColorDefaultRb); option_3.setTextColor(textColorDefaultRb); rgAnswers.clearCheck(); если (QuestionCounter < ВопросCountTotal) { вопросы = вопрос2List.get(QuestionCounter); tvQuestion.setText(questions.getQuestion()); option_1.setText(questions.getOption_1()); option_2.setText(questions.getOption_2()); option_3.setText(questions.getOption_3()); ВопросСчетчик++; tvSOALCount.setText("Soal: " + QuestionCounter + "/" + QuestionCountTotal); ответил = ложь; btnSubmit.setText("Джаваб"); timeLeftInMillis = COUNTDOWN_IN_MILLIS; НачатьВремяВниз(); } еще { закончитьВикторину(); } } частный недействительный startTimeDown () { countDownTimer = новый CountDownTimer(timeLeftInMillis, 1000) { @Override public void onTick(long millisUntilFinished) { timeLeftInMillis = millisUntilFinished; updateCountDownText(); } @Override общественная недействительность onFinish() { времяЛефтИнМиллис = 0; updateCountDownText(); Проверить ответ(); } }.начинать(); } частный недействительный updateCountDownText () { int минут = (int) (timeLeftInMillis / 1000) / 60; int секунды = (int) (timeLeftInMillis / 1000) % 60; Строка timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", минуты, секунды); tvTimer.setText(timeLeftFormatted); если (timeLeftInMillis < 1000) { tvTimer.setTextColor(Color.RED); } еще { tvTimer.setTextColor(textColorDefaultCd); } } частный недействительный checkAnswer() { ответил = правда; countDownTimer.cancel(); RadioButton selectedRadioButton = findViewById(rgAnswers.getCheckedRadioButtonId()); int selectedOption = rgAnswers.indexOfChild(selectedRadioButton) + 1; if (selectedOption == questions.getCorrectAnswer()) { оценка++; tvScore.setText("Оценка: " + оценка); } шоуРешение(); } частная пустота showSolution() { option_1.setTextColor(Color.RED); option_2.setTextColor(Color.RED); option_3.setTextColor(Color.RED); переключатель (questions.getCorrectAnswer()) { Дело 1: option_1.setTextColor(Цвет.ЗЕЛЕНЫЙ); tvQuestion.setText("Ответ 1 правильный"); перерыв; случай 2: option_2.setTextColor(Color.GREEN); tvQuestion.setText("Ответ 2 правильный"); перерыв; случай 3: option_3.setTextColor(Color.GREEN); tvQuestion.setText("Ответ 3 правильный"); перерыв; } если (QuestionCounter System.currentTimeMillis()) { закончитьВикторину(); } еще { Toast.makeText(this, "Tekan sekali lagi untuk keluar", Toast.LENGTH_SHORT).show(); } backPressedTime = System.currentTimeMillis(); } @Override защищенная пустота onDestroy() { супер.onDestroy(); если (countDownTimer!= ноль) { countDownTimer.cancel(); } } @Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(KEY_SCORE, оценка); outState.putInt(KEY_QUESTION_COUNT, QuestionCounter); outState.putLong(KEY_MILLIS_LEFT, timeLeftInMillis); outState.putBoolean(KEY_ANSWERED, ответил); outState.putParcelableArrayList(KEY_QUESTION_LIST, questions2List); } } Вопрос2.java

пакет com.example.aplikasipembelajaranbahasaternate; импортировать android.os.Parcel; импортировать android.os.Parcelable; импортировать java.util.List; публичный класс Вопрос2 реализует Parcelable { частный строковый вопрос; частная строка option_1; частная строка option_2; частная строка option_3; частный int правильный ответ; защищенный Вопрос 2 (Входящая посылка) { вопрос = in.readString(); option_1 = in.readString(); option_2 = in.readString(); option_3 = in.readString(); правильныйОтвет = in.readInt(); } общедоступный статический окончательный создатель СОЗДАТЕЛЬ = новый Создатель() { @Override общественный вопрос2 createFromParcel (посылка в) { вернуть новый Вопрос2(в); } @Override общественный Вопрос2 [] newArray (размер int) { вернуть новый вопрос2[размер]; } }; public Вопрос2 (Строка вопроса, Строка option_1, Строка option_2, Строка option_3, int CorrectAnswer) { this.question = вопрос; this.option_1 = option_1; this.option_2 = option_2; this.option_3 = option_3; this.correctAnswer = правильный ответ; } @Override public void writeToParcel (Parcel dest, int flags) { dest.writeString (вопрос); dest.writeString(option_1); dest.writeString(option_2); dest.writeString(option_3); dest.writeInt(правильный ответ); } @Override public int описать содержание() { вернуть 0; } публичная строка getQuestion() { ответный вопрос; } публичная строка getOption_1() { вариант возврата_1; } публичная строка getOption_2() { вариант возврата_2; } публичная строка getOption_3() { вариант возврата_3; } public int getCorrectAnswer() { вернуть правильный ответ; } public void setQuestion (Строковый вопрос) { this.question = вопрос; } общественная недействительность setOption_1 (String option_1) { this.option_1 = option_1; } общественная недействительность setOption_2 (String option_2) { this.option_2 = option_2; } общественная недействительность setOption3 (String option3) { this.option_3 = option_3; } public void setCorrectAnswer (int CorrectAnswer) { this.correctAnswer = правильный ответ; } } xml

Здесь мое приложение «Викторина»


Изображение

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»