美文网首页Android开发Android学习android学习之路
Android权威指南(第三版)实例进阶 第二章:从一个问题的反

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

作者: 故事熊的象限 | 来源:发表于2018-09-04 21:56 被阅读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属性,视力障碍者选项

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/vhonwftx.html