Android开发Android学习android学习之路

Android权威指南(第三版)实例进阶 第二章:从一个问题的反

2018-09-04  本文已影响8人  故事熊的象限
  1. 创建新的类(Java class),在文件里面新增封装文本问题的方法和文本答案两个成员变量的代码,获得获取方法getterand setting,位置:java class
  public class Question {
      private int mTextResId;      //资源ID总是int型,设置成员变量:问题ID、回答正确

      private boolean mAnswerTrue;
      public Question(int textResId,boolean answerTrue){

            //question类中包括文本问题和文本答案
          mTextResId = textResId; //设置变量
          mAnswerTrue = answerTrue;
      }

      //在构造方法的尾部创建getterand setter
      public int getTextResId() { //获得资源ID
          return  mTextResId;
      }
      public void setTextResId(int textResId) { //设置文本ID
          mTextResId = textResId; //
      }
      public boolean isAnswerTrue() {
          return mAnswerTrue;
      }
      public void setAnswerTrue(boolean answerTrue){
          mAnswerTrue = answerTrue;
  }
  }
  1. 设置:第一次需要设置代码风格(可选)
  2. 修改:无需硬编码,修改已知字符串定义,增加问题ID(按钮ID之前设置过),xml中新增下一个按钮
  3. 新增字符串问题,位置 res/string
  4. 更新软件控制器层,主活动的新按钮以及问题数组以及索引变量(使用多次调用引用问题代码)
  5. 引用textview设置当前文本问题指向地理知识问题
  mQuestionTextView.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  mCurrentIndex = (mCurrentIndex +1) % mQuestionBank.length; 
                  //索引=索引+1之后取模,根据问题确定长度
                  updateQuestion();
              }
          });
  1. 增加下一步触发条件
  2. 增加判断用户点击并使用气泡进行反馈
  private void checkAnswer(boolean userPressedTrue){ 
          //此方法判断用户是否点击正确或错误按钮,使用toast反馈到用户
          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();
      }

9.封装公共代码:删除两个索引问题代码,直接调用,删除两个toast代码并直接调用(以上代码)

private void  updateQuestion(){  //封装公共代码,放在单独的私有方法里
        int question = mQuestionBank[mCurrentIndex].getTextResId(); //问题文本 = 数组获取的[变量]之后textview的资源ID
        mQuestionTextView.setText(question);  //问题文字设置问题资源ID,显示文字
    }

后续:
增加上一步 按钮
更改button变为imagebutton,新增contentdescription属性,视力障碍者选项

上一篇下一篇

猜你喜欢

热点阅读