簡體   English   中英

為什么此setter方法不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM