我正在尝试获取变量,然后使用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);
}
答案 0 :(得分:0)
我已经解决了我自己的问题。
如果你注意到,我正在为onCreate方法中的mCurrentIndex做我的作业。
onCreate只调用一次,因此我的setter方法永远不会被调用,因为savedInstanceState为null。只有在我旋转设备并因此调用onCreate时才会调用该setter方法。 但是,当我从CheatActivity导航回来时调用onResume,我只是将我的setter方法放入其中。
我的更新代码取出了hasCheated变量,并在整个代码中简单地调用了getter方法。
感谢帮助人员!