0
我正在通过大书呆子牧场Android编程第三版书自己工作。在第2章中,向应用添加上一个按钮是一个挑战。我已经添加了前一个按钮,只要我不尝试先前的第一个问题,它就可以正常工作。我不知道如何循环按钮,所以无论何时我在第一个问题前,它都默认为最后一个问题。下一个按钮会循环所有问题,但是前一个按钮不会。我只是学习Android环境,所以我确定这是一个简单的问题。我该如何解决我目前的错误?固定阵列超出索引错误
mNextButton = (Button) findViewById(R.id.next_button);
mNextButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
}
});
mPreviousButton = (Button) findViewById(R.id.previous_button);
mPreviousButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
updatePrevQuestion();
}
});
updateQuestion();
updatePrevQuestion();
}
private void updatePrevQuestion(){
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTexView.setText(question);
}
private void updateQuestion(){
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTexView.setText(question);
}
以下是错误即时得到
6-06 19:18:09.158 14727-14727/com.example.dany_user.geo_quiz E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dany_user.geo_quiz, PID: 14727
java.lang.ArrayIndexOutOfBoundsException: length=6; index=-1
at com.example.dany_user.geo_quiz.QuizActivity.updatePrevQuestion(QuizActivity.java:98)
at com.example.dany_user.geo_quiz.QuizActivity.access$400(QuizActivity.java:11)
at com.example.dany_user.geo_quiz.QuizActivity$5.onClick(QuizActivity.java:87)
at android.view.View.performClick(View.java:6205)
at android.widget.TextView.performClick(TextView.java:11103)
at android.view.View$PerformClick.run(View.java:23653)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)