Java 为什么这个setter方法不起作用?
我试图获取一个变量,然后用setter方法设置另一个变量 以下是我所说的代码:Java 为什么这个setter方法不起作用?,java,android,getter-setter,Java,Android,Getter Setter,我试图获取一个变量,然后用setter方法设置另一个变量 以下是我所说的代码: if(savedInstanceState != null) { mCurrentIndex = savedInstanceState.getInt(KEY_INDEX); mIsCheater = savedInstanceState.getBoolean(KEY_CHEAT); mQuestionBank[mCurrentIndex].setHasCheated(mIsCheater);
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方法,因为savedInstanceState为null。只有当我旋转设备并因此调用onCreate时,才会调用setter方法。 然而,当我从CheatActivity返回时,onResume被调用,我只是将setter方法放在其中 我更新的代码去掉了hasCheated变量,并在整个代码中调用了getter方法
谢谢你们的帮助 您的onSaveInstanceState(捆绑包b)的代码是什么样子的?您确定正确获取/设置了它吗?请尝试在if条件内和登录旁边打印索引。我已添加了onSaveInstance的代码,并尝试在索引上运行日志。他们完全一样。我几乎可以肯定我的设置/设置正确。你确定你读取的数组字段正确吗??