Sprawdzanie odpowiedzi użytkownika metodą checkAnswer

0

Witajcie,

wyświetlanie odpowiedzi "Poprawna" , "Niepoprawna" odbywa się poprzez naciskanie przycisków 'Prawda' lub 'Fałsz' na zadane pytanie.

  1. Jednak niezależnie czy nacisnę przycisk 'Prawda' czy 'Fałsz' wyświetlany jest jeden toast z odpowiedzią "Poprawna" lub "Niepoprawna" (rozumiem, że pobierany jest po prostu drugi argument z kolejnych obiektów Question). Jak to zmienić żeby toast był różny dla przycisków 'Prawda' i 'Fałsz'?

  2. Co oznacza w tym kodzie int messageResId = 0; i dlaczego tutaj messageResId = R.string.incorrect_toast; mamy =R.string a nie findViewById?

  3. Dlaczego w przyciskach mTrueButton i mFalseButton mamy w checkAnswer (true) wartość true?


private Question[] mQuestionBank = new Question[] {
            new Question(R.string.question_australia, true),
            new Question(R.string.question_oceans, true),
            new Question(R.string.question_mideast, false),
            new Question(R.string.question_africa, false),
            new Question(R.string.question_americas,true),
            new Question(R.string.question_asia, true),
    };

private void checkAnswer (boolean userPressedTrue){
        boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();
        int messageResId = 0;
        if (userPressedTrue == answerIsTrue){
            messageResId = R.string.correct_toast;
        } else{
            messageResId = R.string.incorrect_toast;
        }
        Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
    }

 mTrueButton = (Button) findViewById(R.id.true_button);
        mTrueButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               checkAnswer(true);
            }
        }); 
mFalseButton = (Button) findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                checkAnswer(true);

            }
        });

0
  1. jest blad w listenerze do przycisku false, powinno byc checkAnswer(false); zgodnie z nazewnictwem w metodzie checkAnswer (boolean userPressedTrue)
    skoro naciskasz false to powinienes przekazac false jako userPressedTrue

  2. Z resourcow jest generowany plik R ktory zawiera id'ki roznych androidowych komponentow. Akurat stringi tez tam sie znajduja i mozesz pobrac taki string po jego odpowedniku R.string.... findview uzywasz kiedy chcesz znalezc widok i pobrac do niego referencje

  3. wspomnialem juz o bledzie w buttonie false. zgodnie z checkAnswer (boolean userPressedTrue) dla true powinno byc checkAnswer (true) a dla false checkAnswer (false)

0

Super, dziękuje serdecznie.

Zastanawiam się jeszcze tylko dlaczego mamy to int messageResId = 0; i dlaczego temu przypisana jest wartość zero?

I jeszcze myślę jak to działa dla przycisku 'Fałsz'. Jeśli w argumencie będzie false (czyli użytkownik przyciśnie button Fałsz) to wykona się tylko else w kodzie, czy tak? No a gdy naciśnięcie Fałsz i to jest prawdą (czyli jest takie jak drugi argumentem z obiektu Question czyli tutaj false), to jaki kod się wykonuje?

Pewnie banalne ale trochę się zagubiłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1