Android编程权威指南——GeoQuiz 学习体会

  这个是我的第一篇博客!

  一转眼大学已经过去了一半,在学校一直感觉到很迷茫,

  在学校一直没有找到自己想要的东西,但是在我的内心中总是在告诉自己--你要学一点有用的技能(或许有用吧)

或许是因为自己有一定的java基础,也或许是因为早些时候喜欢折腾安卓刷机的乐趣,所以我选择了学习安卓。由于学校没有开设安卓课程,都是一些大数据类的课程,但是我不是很有兴趣,所以我开始了自学安卓之路。

  之所以写博客是想要记录下我的学习历程--我的安卓学习之路

  我不确定我能走到多远,只是想尽可能的走远一点吧。

  在找了很多的资料,包括书籍,以及网上的学习视频,总是和自己感觉的略有不同,网上的评价也各有千秋,我深知,适合自己的才是最好的。

  在找寻资料的期间,零零碎碎的我也学习了很多杂碎的东西,后面我才明白,我没有经过系统的学习。在我以前的经验来看,无论怎样,基础知识都将是重要的。

  所以我决定我要从基础开始系统的学习一遍。

  在我做这个决定后,我开始准备我要学习的资料,后面我选中了 《Android编程权威指南  第3版》这一本书,选择它的原因也很简单,这本书是基于Android Studio编写,并且以详尽的案例的讲解知识点。

  前面说了那么多没用的乱七八糟的东西,下面还是回到主题。


  GeoQuiz 在这个项目中所涉及的知识确实很少,我就详细说一下其中挑战练习吧!

  作为一个安卓初学的菜鸟来说,如果有什么说错或者不是很好的的地方,请谅解,如果有大佬不吝指点1,2我将非常感谢。

下面来看看这些问题

 Android编程权威指南——GeoQuiz 学习体会_第1张图片

  对于第一个问题,用户作弊后,可以旋转CheatActivity来清除作弊痕迹,我就直接使用在CheatActivity.java中使用

  protected void onSaveInstanceState(Bundle outState)

  这个方法将TextView的值保存,在旋转后新建的Activity中再复原就可以达到了。

 

  对于第二个问题 ,和第一个问题类似,解决方法一致。

 

当我看到第三个问题的时候,我确实思考了一些时间怎么来解决这个问题,

  我尝试了再Question.java中再添加一个Boolean 类型的变量,用于记录这个问题已经被用户作弊,用户在判断的时候只需要查询这个Boolean的值,就可以判断这个问题用户是否曾经作弊。但是这个是在Activity不会销毁和重建才有效。就像旋转一次屏幕,就会使QuestionBank重建,这样这些用于判断是否作弊的Boolean值全部重置。所以这个方案被我否定了。

  在我的思考下,我找到了解决的办法

我使用了一个List来解决这个问题

private ArrayList mIsCheaterQuestion= new ArrayList();

protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
       if (resultCode != RESULT_OK){
           return;
       }
       if (requestCode == REQUEST_CODE_CHEAT){
           if (data == null){
                return;
           }
           mIsCheater = CheatActivity.wasAnswerShow(data);
           mIsCheaterQuestion.add(mCurrentIndex);
       }
}


 

  只需要将用户作弊过的问题的索引号保存起来,然后判断这个问题的索引号是否在这个List中,就可以判断这个问题是否曾经做过弊。

  为了防止Activity的销毁和重建(旋转屏幕)只需要像开始两个问题那样使用

  protected void onSaveInstanceState(BundleoutState)

  这个方法将这个list 保存,然后复原就可以了。

 Android编程权威指南——GeoQuiz 学习体会_第2张图片

  对于这个问题,想起来还是很简单的,无非就是定义一个变量,然后作弊后更新这个变量,当等于0时,就不让作弊了,做一个Toast。

  但是我遇到了一个问题

  我在资源文件中定义了

  3

  我在Activity中使用

  mCheaterNum = R.integer.start_cheater_num;

  得到的是一个很大的数字,也就是一个地址。

  后面是改为了

  3


  Activity中使用

  mCheaterNum =Integer.parseInt(this.getString(R.string.start_cheater_num));

解决了这个问题。当然 要完整的完成它 还要做防止Activity的销毁和重建,还要做数据的一些保留的工作了,就和前面一样。

做完这些,我还给它加了一个计分的功能 ,答对了,我就加一分嘛!!

关于项目的所有源码,我也上传到论坛http://download.csdn.net/download/qq_32503365/10110590

点击打开链接

最后给大家看看最终的界面图:

Android编程权威指南——GeoQuiz 学习体会_第3张图片

你可能感兴趣的:(安卓学习之路)