2015-12-02 3 views
-1

Première question est le Question_oceans voir le code ci-dessous. essayer d'avoir la note de l'utilisateur qu'il ne peut pas obtenir « Prevoius » question lorsque le bouton est pressé parce qu'il était la première question » im obtenir une erreur. Peut-êtreAndroid Retour Erreur du bouton

private Question[] mQuestionBank = new Question[]{ 
     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 int mCurrentIndex = 0; 

private void updateQuestion() { 
    int question = mQuestionBank[mCurrentIndex].getTextResId(); 
    mQuestionTextView.setText(question); 
} 

private void lastQuestion(boolean userPressedPrevious) { 
    boolean answerIsYes = mQuestionBank[mCurrentIndex].isAnswerTrue(); 

    int messageQuesId = 0; 

    if (userPressedPrevious == answerIsYes) { 
     messageQuesId = R.string.not_previous; 
    } else { 
     updateQuestion(); 
    } 

    Toast.makeText(this, messageQuesId, Toast.LENGTH_SHORT).show(); 
} 

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(); 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quiz); 

    mQuestionTextView = (TextView) findViewById(R.id.question_text_view); 

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

    }); 

    mFalseButton = (Button) findViewById(R.id.false_button); 
    mFalseButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      checkAnswer(false); 
     } 
    }); 

    mPreviousButton = (Button) findViewById(R.id.previous_button); 
    mPreviousButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length; 
      updateQuestion(); 
      lastQuestion(true); 
     } 
    }); 
    updateQuestion(); 

    mNextButton = (Button) findViewById(R.id.next_button); 
    mNextButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length; 
      updateQuestion(); 
     } 
    }); 

    updateQuestion(); 
+0

Bienvenue à SO Lorsque vous rencontrez une erreur, s'il vous plaît dites-nous ce que le message d'erreur dit, et sur quelle ligne il se produit – LarsH

+0

S'il vous plaît envoyer le message d'erreur sortie de «LogCat» - il sera beaucoup plus simple de déboguer – PPartisan

+0

AndroidRuntime: FATAL EXCEPTION: principal Processus: com.bignerdranch.android.geoquiz, android.content.res.Resources $ NotFoundException: ID de ressource de chaîne # 0x0 atandroid.content.res.Resources.getText (Resources.java:1334) atandroid.widget.Toast .makeText (Toast.java:379) –

Répondre

0

vous devez utiliser une instruction catch try. Si vous l'exécutez Encore une fois, vous verrez probablement une erreur de logcat vous disant quel est le problème.En catch, vous pourriez faire un Toast en disant, "Désolé, la question précédente n'est pas disponible." Bonne chance!