我為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=;
}
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=;i<answerList.length;i++){
answerList[i]=mQuestions[i].getIsAnswerd();
}
outState.putIntArray(KEY_ANSWER,answerList);
}
- 在oncreate方法中擷取答題情況
if(savedInstanceState!=null){
mCurrentIndex=savedInstanceState.getInt(KEY_INEX,);
int[] answerList=savedInstanceState.getIntArray(KEY_ANSWER);
for(int i=;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=;
if(userResult==questionresult){
mQuestions[mCurrentIndex].setIsAnswerd();
textResId=R.string.correct_toast;
}else{
mQuestions[mCurrentIndex].setIsAnswerd();
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()>){
true_btn.setEnabled(false);
false_btn.setEnabled(false);
}else{
true_btn.setEnabled(true);
false_btn.setEnabled(true);
}
}