随笔分类 - Android编程权威指南(第3版)挑战练习
摘要:相较于发送消息,愤怒的用户可能更倾向于直接责问陋习嫌疑人。新增一个按钮,允许用户直接拨打陋习嫌疑人的电话。 要完成这个挑战,首先需要联系人数据库中的手机号码。这需要查询ContactsContract数据库中的CommonDataKinds.Phone表。如何查询,请查看它们的参考文档。 小提示:你
阅读全文
摘要:这个练习比较简单。Android支持库有个叫作ShareCompat的类,它有一个内部类叫IntentBuilder。使用这个内部类创建发送消息的Intent略微方便一些。因此,请在mReportButton的监听器中,改用ShareCompat.IntentBuilder来创建你的Intent。
阅读全文
摘要:如果为应用添加过Delete Crime菜单项的话,就可以直接调用CrimeLab的deleteCrime(Crime)方法,继而调用mDatabase.delete(...)方法来实现删除功能。如果还没有,那就先给CrimeFragment的工具栏添加一个Delete Crime菜单项,然后调用C
阅读全文
摘要:当前,CriminalIntent应用启动后,会显示一个空白列表。从用户体验上来讲,即使crime列表是空的,也应展示提示或解释类信息。请设置空视图并展示类似“没有crime记录可以显示”的信息。再添加一个按钮,方便用户直接创建新的crime记录。判断crime列表是否包含数据,然后使用任何类都有的
阅读全文
摘要:按照书里步骤来就行 1.首先,在strings.xml文件中定义复数字符串资源。 2.然后,在updateSutitle方法里面修改,使用getQuantityString方法正确处理单复数问题 3.运行效果:
阅读全文
摘要:CriminalIntent应用目前不支持删除现有crime记录。请为CrimeFragment添加菜单项,允许用户删除当前crime记录。用户点击删除菜单项后,记得调用CrimeFragment托管活动的finish()方法回退到前一个activity界面。 步骤跟书里添加的那段差不多: 1.创建
阅读全文
摘要:首先看一个简单的练习。另写一个名为TimePickerFragment的对话框fragment,允许用户使用TimePicker组件选择crime发生的具体时间。在CrimeFragment用户界面上再添加一个按钮,以显示TimePickerFragment视图界面。 跟书里DatePicker的步
阅读全文
摘要:给CrimePagerActivity添加两个按钮。允许使用它们快速跳至第一条和最后一条crime记录。当然,要注意控制,查看第一条记录时应禁用Jump to First按钮,查看最后一条时禁用Jump to Last按钮。 1.首先修改activity_crime_pager.xml,添加两个按钮
阅读全文
摘要:可以观察到,原本CrimeFragment的边距没有了。 要修改很简单,只需要在fragment_crime.xml里面修改一下就可以。 把 1 android:layout_margin="16dp" 修改成 1 android:padding="16dp" 效果:
阅读全文
摘要:把原本使用的Adapter的notifyDataSetChanged方法换成定位刷新RecyclerView.Adapter的notifyItem。 1.在CrimeListFragment里面定义一个全局变量 1 private static int mCrimeIndex; 2.修改CrimeL
阅读全文
摘要:把原本的Date对象的toString()方法换成android.text.format.DateFormat类实例。 1.导入import android.text.format.DateFormat; 1 import android.text.format.DateFormat; 2.在Cri
阅读全文
摘要:请在RecyclerView中创建两类列表项:一般性crime,以及需警方介入的crime。要完成这个挑战,你需要用到RecyclerView.Adapter的视图类别功能(view type)。在Crime对象里,再添加一个mRequiresPolice实例变量,使用它并借助getItemView
阅读全文
摘要:允许用户最多作弊3次。记录用户查看答案的次数,在CHEAT按钮下显示剩余次数。超出后,禁用偷看按钮。 因为只有点击mShowAnswerButton按钮才是作弊,所以需要从QuizActivity传数据到CheatActivity再传回去。 1.首先定义好新的控件显示剩余作弊次数 2.然后再在Qui
阅读全文
摘要:在GeoQuiz应用的页面布局上添加一个TextView组件,向用户报告设备运行系统的API级别。 首先在activity_cheat.xml里面定义好组件 在CheatActivity里面定义好 在onCreate方法里面定义好 最后把版本号赋值给组件对象就行 运行效果:
阅读全文
摘要:作弊者是注定会失败的。当然,如果他们能一直避开反作弊手段,那就另当别论了。正所谓道高一尺魔高一丈,也许他们能做到。 1.GeoQuiz应用有些大漏洞,可以旋转CheatActivity来清除作弊痕迹。 解决方法,把数据保存在Bundle对象里面。 首先先定义好Key值 然后在onSaveInstan
阅读全文
摘要:用户答完全部题目后,显示一个toast消息,给出百分比形式的评分。 1.设置两个数据,一个代表答对正确答案的个数,一个代表回答问题的个数。 2.在checkAnswer函数里面,当答对题目的时候,把correctAnswer加一。 3.在mNextButton按钮监听器里面每点击一次answerLe
阅读全文
摘要:用户答完某道题:就禁掉那道题对应的按钮,防止用户一题多答。 1.在Question类里面添加属性isAnswerd,并且增加相应的getter跟setter方法,构造函数修改。 2.修改mQuestionBank数组里面的创建对象时构造函数的参数,第三个参数默认为0表示没答过 3.设置Key值 4.
阅读全文
摘要:把前进和后退按钮变成只显示指示图标,让用户界面更清爽。 1.把UI界面的Button控件换成ImageButton 2.初始化ImageButton控件对象 3.修改Button为ImageButton创建监听器 4.最后效果
阅读全文
摘要:为应用新增后退按钮,用户点击时,可以显示上一道测试题目。 1.首先在资源文件string.xml里面添加后退按钮的引用名称 2.然后再UI界面添加按钮控件信息 3.初始化控件对象 4.在onCreate里面添加mPrevButton监听器以及后退的判定条件
阅读全文
摘要:为了优化体验,点击到题目(TextView)区域也可以跳转到下一题。 1.先初始化控件对象 2.在onCreate函数里面为mQuestionTextView添加监听器
阅读全文

浙公网安备 33010602011771号