《Android编程权威指南》第二章练习的挑战

本文详细介绍了如何在Android应用中为TextView添加点击监听器,实现单击跳转功能;同时,通过添加后退按钮,实现前后页面的切换,注意防止越界错误;并进一步将按钮改为图标按钮,提升用户体验。每个挑战的步骤都包含代码示例,适合Android初学者实践。
摘要由CSDN通过智能技术生成

挑战练习一:为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 &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值