我一直在尝试修复已经3天的应用程序中的错误,但没有成功。问题是一个实例变量被魔法分配。实例变量被神奇地分配在java中
该应用程序是一个蓝牙多人游戏,其中的玩家轮流。游戏结束后,会显示一个对话框询问玩家是否愿意继续。因此,当玩家1继续时,消息被发送给玩家2以通知玩家1想要继续。变量“opponentContinued”变为true。当玩家2点击也继续时,如果opponentContinued等于true,则游戏重新开始。
问题:
当对话框显示双方的球员和球员1旋转屏幕,播放2次点击继续,播放器1接收通知和“opponentContinued”被分配为真。在此之后,当玩家1点击继续并且(对手持续必须为真)检查“对手持续”是否为真时,发现“对手持续”为假。
如果没有轮换,一切正常。
然后为了让它有点清楚,我做了一个虚拟变量来监视何时以及如何分配“对手持续”,并且每次分配时我都使dummyBoolean等于“opponentContinued”。我使dummyBoolean为默认值true。在“onContinueClicked”方法中,“dummyBoolean”为true,而“opponentContinued”为false。
public class MainActivity extends Activity {
private boolean opponentContinued;
private boolean dummyBoolean = true;
private void onOpponentContinued(){
opponentContinued = true;
dummyBoolean = opponentContinued;
}
private void onContinueClicked(){
// opponentContinued is false
// dummyBoolean is true
if (opponentContinued){
// Continue the game
}
}
}
我不知道可能是什么问题。有没有人遇到过这样的问题?任何帮助表示赞赏。
编辑
请注意,这个问题有什么都不做与屏幕旋转时进行省电状态。问题在于,变量“opponentContined”在设置为true之后会“神奇地”分配给默认值false。
我知道这听起来不现实,但它毁了我很多时间。
你应该保存变量的状态,当onPause被调用时(旋转,单击主页按钮等......) – PedroHawk
问题不是关于状态。我不需要保存任何东西。 –
我不得不说,PedroHawk是正确的....检查此链接http://stackoverflow.com/questions/10126845/handle-screen-rotation-without-losing-data-android –