我为question添加属性isAnswerd,判断是否答题,该值为1代表已经答过,为0代表没有答题,或者答错了,可以继续答题。
同样,将答题的结果存储在Bundle中,在oncreate方法中获取,
下面是部分涉及的源代码:
* 首先是在question实体类中添加相应属性:
public class Question{
private int mTextResId;
private boolean mAnswerTrue;
private int isAnswerd;
public Question(int textResId, boolean answerTrue) {
mTextResId = textResId;
mAnswerTrue = answerTrue;
isAnswerd=0;
}
public int getTextResId() {
return mTextResId;
}
public void setTextResId(int textResId) {
mTextResId = textResId;
}
public boolean isAnswerTrue() {
return mAnswerTrue;
}
public void setAnswerTrue(boolean answerTrue) {
mAnswerTrue = answerTrue;
}
public int getIsAnswerd() {
return isAnswerd;
}
public void setIsAnswerd(int isAnswerd) {
this.isAnswerd = isAnswerd;
}
}
- 设置key值并在saveInstanceState方法中进行存储
private static String KEY_ANSWER="KEY_ANSWER";
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.d(TAG,"onSaveInstanceState() called");
outState.putInt(KEY_INEX,mCurrentIndex);
int[] answerList=new int[mQuestions.length];//存储是否已经答过该题的情况
for(int i=0;i<answerList.length;i++){
answerList[i]=mQuestions[i].getIsAnswerd();
}
outState.putIntArray(KEY_ANSWER,answerList);
}
- 在oncreate方法中获取答题情况
if(savedInstanceState!=null){
mCurrentIndex=savedInstanceState.getInt(KEY_INEX,0);
int[] answerList=savedInstanceState.getIntArray(KEY_ANSWER);
for(int i=0;i<mQuestions.length;i++){
mQuestions[I].setIsAnswerd(answerList[I]);//将答题情况存储在question中
}
}
- 在判断正误的时候设置inanswered值,回答正确设置为1,回答错误设置为0,代表可以继续答题
private void checkAnswer(boolean userResult){
boolean questionresult=mQuestions[mCurrentIndex].isAnswerTrue();
int textResId=0;
if(userResult==questionresult){
mQuestions[mCurrentIndex].setIsAnswerd(1);
textResId=R.string.correct_toast;
}else{
mQuestions[mCurrentIndex].setIsAnswerd(0);
textResId=R.string.incorrect_toast;
}
ButtonEnabled();
Toast.makeText(this, textResId, Toast.LENGTH_SHORT).show();
}
private void update(){
int question=mQuestions[mCurrentIndex].getTextResId();
mQuestion_text.setText(question);
ButtonEnabled();
}
注意这两个地方都要使用,通过每次index变化都要判断一次,否则保留的状态就是原先的状态,就会出现即使没有答过这道题也不能作答的情况
- 设置button是否可以点击ButtonEnabled()方法
public void ButtonEnabled(){
if(mQuestions[mCurrentIndex].getIsAnswerd()>0){
true_btn.setEnabled(false);
false_btn.setEnabled(false);
}else{
true_btn.setEnabled(true);
false_btn.setEnabled(true);
}
}