Имеются следующие элементы и их назначения(весь код приводить не буду, думаю и так все понятно):
private Button next_button;
private TextView mQuestionTextView;
private int mCurrentIndex = 0;
private TrueFalse[] mQuestionBank = new TrueFalse[] {
new TrueFalse(R.string.question_ocean, true),
new TrueFalse(R.string.question_mideast, false),
new TrueFalse(R.string.question_africa, false),
new TrueFalse(R.string.question_americas, true),
new TrueFalse(R.string.question_asia, true)
};
<b>private void updateQuestion() {
if (mCurrentIndex != -1) {
int question = mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);
} else {
throw new ArrayIndexOutOfBoundsException("ArrayIndexOutOfBoundException");
mQuestionTextView.setText(arrayExc);</b>
Далее в методе onCreate это происходит так:
Button mPrevButton = (Button)findViewById(R.id.prevButton);
mPrevButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
updateQuestion();
}
});
Все работает только для элемента массива > 0, иначе, разумеется, появляется ArrayIndexOutOfBoundsException.
(Жирный код до моих попыток исправить ситуацию выглядел как
int question = mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);
, без if/else. в методе updateQuestion.
При этом кнопка "Next", перебирающая элементы массива работает циклически, и не возникает исключения выходы за пределы массива:
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
Суть проблемы: две кнопки, пользующие одинаковые методы, но одна работает в положительную сторону нормально
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length
;, а другая
mCurrentIndex = (mCurrentIndex - 1) % mQuestionBank.length;
не работает.