您的位置:首页 > 移动开发 > Android开发

Android编程权威指南(第2版)—第5章挑战练习

2017-08-18 15:27 288 查看
5.5 挑战练习(1)用户作弊后,可以旋转CheatActivity来清除作弊痕迹这个可以用书本前面让题目横屏后不重置的方法来进行:新建两个常量和一个变量
private static final String TAG = "CheatActivity";
private static final String KEY_INDEX = "index";
private boolean mIsCheat;
重写onSaveInstanceState方法
用以存储用户是否作弊的状态
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG, "onSaveInstanceStateCheat");
savedInstanceState.putBoolean(KEY_INDEX, mIsCheat);
}
在show_answer_button的监听事件里,对mIsCheat进行赋值
mIsCheat = true;
最后在onCreate方法里增加如下代码:
if (savedInstanceState != null){
mIsCheat = savedInstanceState.getBoolean(KEY_INDEX, false);
setAnswerShownResult(true);

if (mIsCheat){
mAnswerTextView.setText(R.string.true_button);
} else {
mAnswerTextView.setText(R.string.false_button);
}
}
(2)作弊返回后,用户可以旋转QuitActivity来清除mIsCheater变量值QuizActivity中修改的方法跟前面的完全一样,需要注意的是,在CheatActivity中,需要增加一条代码if (savedInstanceState != null){mIsCheat = savedInstanceState.getBoolean(KEY_INDEX, false);setAnswerShownResult(true); //add this one}不然屏幕反转的时候,CheatActivity里面之前记录的setAnswerShownResult信息会丢失,这样页面返回时,数据传不到QuizActivity当中
(3)用户可以不断单击next按钮,跳到偷看过答案的问题,从而使作弊记录丢失
有借鉴网友onevo1的方法,http://blog.csdn.net/onevo1/article/details/47109581但是文中做法比较复杂,我进行了最简单的应用只修改QuizActivity:增加arraylist收集作弊题号private ArrayList<Integer> list = new ArrayList<Integer>();
修改onActivityResult方法,如果作弊记录为true,则题目号入作弊列表
if (mIsCheater == true){list.add(mCurrentIndex);}
修改checkAnswer方法,如果当天题目号在作弊列表中,则显示作弊提示
if (mIsCheater || list.contains(mCurrentIndex)){messageResId = R.string.judgment_toast;} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: