[英]Why does this setter method not work?
我試圖獲取一個變量,然后使用setter方法設置另一個變量。
這是我正在談論的代碼:
if(savedInstanceState != null) {
mCurrentIndex = savedInstanceState.getInt(KEY_INDEX);
mIsCheater = savedInstanceState.getBoolean(KEY_CHEAT);
mQuestionBank[mCurrentIndex].setHasCheated(mIsCheater);
}
在這里,我得到mIsCheater並使用它來設置另一個變量。
但是,當我運行我的應用程序時,getter方法返回false,而mIsCheater返回true。
這是該代碼:
Log.i(TAG,"mIsCheater = " + mIsCheater);
Log.i(TAG,"hasCheated = "+ mQuestionBank[mCurrentIndex].getHasCheated());
if(mQuestionBank[mCurrentIndex].getHasCheated()) {
messageResId = R.string.judgment_toast;
} else {
if (userPressedTrue == answerIsTrue) {
messageResId = R.string.correct_toast;
} else {
messageResId = R.string.incorrect_toast;
}
}
這是記錄器信息:
11088-11088/geoquiz.android.tubbs.com.geoquiz I/QuizActivity﹕ **mIsCheater = true**
11088-11088/geoquiz.android.tubbs.com.geoquiz I/QuizActivity﹕ **hasCheated = false**
我不明白這一點,因為我清楚地正確調用了setter / getter方法。 它們也是相同的當前索引等等。 我讓它工作了一秒鍾,但是后來我做了些改變,但現在卻不起作用。
這是其他代碼:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Log.i(TAG,"onSaveInstanceState()");
savedInstanceState.putInt(KEY_INDEX,mCurrentIndex);
savedInstanceState.putBoolean(KEY_CHEAT,mIsCheater);
}
我已經解決了我自己的問題。
如果您注意到了,我在onCreate方法中為mCurrentIndex做分配。
onCreate僅被調用一次,因此我的setter方法從不會被調用,因為saveInstanceState為null。 僅當我旋轉設備並因此調用onCreate時,才會調用該setter方法。 但是,當我從CheatActivity導航回去時,僅將setter方法放入其中,就會調用onResume。
我更新的代碼刪除了hasCheated變量,並在整個代碼中簡單地將getter方法稱為它的位置。
感謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.