为什么这个setter方法不起作用?

时间:2014-10-24 17:49:23

标签: java android getter-setter

我正在尝试获取变量,然后使用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);
}

1 个答案:

答案 0 :(得分:0)

我已经解决了我自己的问题。

如果你注意到,我正在为onCreate方法中的mCurrentIndex做我的作业。

onCreate只调用一次,因此我的setter方法永远不会被调用,因为savedInstanceState为null。只有在我旋转设备并因此调用onCreate时才会调用该setter方法。 但是,当我从CheatActivity导航回来时调用onResume,我只是将我的setter方法放入其中。

我的更新代码取出了hasCheated变量,并在整个代码中简单地调用了getter方法。

感谢帮助人员!