挑战练习一:为TextView添加监听器
效果:单击应用的TextView文字区就可以跳转到下一道题。
步骤:根据Next按钮监听器的添加(34页的代码清单2-8和2-9),就可以了。在QuizActivity.java中添加如下代码:
</pre><p><pre name="code" class="java"> @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mQuestionTextView = (TextView)findViewById(R.id.question_text_view) ;
/* int question = mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question); */
//这里开始
mQuestionTextView.setOnClickListener(new View.OnClickListener() { //开始,P41,为TextView添加监听器
@Override
public void onClick(View v) {
mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;
updateQuestion();
}
}); //结束。
//这里结束
mTrueButton=(Button)findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
挑战练习二:添加后退按钮
效果:与单击Next进入下一道题相反,单击此按钮是,进入上一页。
步骤:同样的,仿照Next按钮的添加就可以。在QuizActivity.java中添加:
这里与Next进入下一页+1不同,返回上一页则是-1,而且由于mCurrentIndex初始值为0,-1后则为-1,那么就会报错了,所以就需要再编辑,在0,即第一页时,返回最大一页。
package com.bignerdranch.android.geoquiz;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class QuizActivity extends Activity {
private Button mTrueButton;
private Button mFalseButton;
//这里开始
private Button mPrevButton;
//这里结束
private Button mNextButton;
private TextView mQuestionTextView;
private TrueFalse[ ] mQuestionBank = new TrueFalse[ ] {
new TrueFalse(R.string.question_oceans, 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) ,
} ;
private int mCurrentIndex = 0;
private void updateQuestion() {
int question = mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);
}
private void checkAnswer(boolean userPressedTrue) {
boolean answerIsTrue = mQuestionBank[mCurrentIndex].isTrueQuestion();
int messageResId = 0;
if (userPressedTrue == answerIsTrue) {
messageResId= R.string.correct_toast;
} else {
messageResId &#