Я пытался исправить ошибку в своем приложении уже 3 дня, без каких-либо успехов. Проблема в том, что переменная экземпляра получает магическую привязку.Переменная экземпляра получает магическое назначение в java
Приложение представляет собой многопользовательскую игру с Bluetooth, в которой игроки принимают очередь. После того, как игра окончена, отображается диалоговое окно с запросом игроков, если они хотят продолжить. Поэтому, когда игрок 1 продолжает, сообщение отправляется игроку 2, чтобы уведомить, что игрок 1 хочет продолжить. Переменная «enemyContinued» становится правдой. И когда игрок 2 клика тоже продолжит, если оппонентContinued равен true, игра перезапускается.
Проблема:
Когда будет показан диалог для обоих игроков и игрока 1 вращает экран, игрок 2 щелчки продолжаются, игрок 1 получает уведомление и «opponentContinued» получает назначенную истинным. ПОСЛЕ этого, когда игрок 1 кликает и продолжает (оппонент должен продолжаться), проверяет, истинна ли опция «forwardContinued», обнаруживает, что «enemyContinued» является ложным.
Все работает нормально, если нет вращения.
Затем, чтобы сделать это немного ясно, я сделал фиктивную переменную, чтобы отслеживать, когда и как назначается «enemyContinued», и каждый раз, когда он получил назначение, я сделал dummyBoolean равным «сопернику». Я сделал dummyBoolean true как значение по умолчанию. В методах «onContinueClicked» «dummyBoolean» является истинным, а «enemyContinued» - ложным.
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
}
}
}
Я понятия не имею, что может быть проблемой. Кто-нибудь испытал такую проблему? Любая помощь приветствуется.
EDIT
Пожалуйста, обратите внимание, что эта проблема имеет не делать ничего с сохранением состояния во время поворота экрана. Проблема заключается в том, что переменная «enemyContined» «магически» назначается значению по умолчанию false, после того как установлено значение «true».
Я знаю, это звучит нереалистично, но это погубило меня много времени.
вы должны сохранить состояние своих переменных при вызове onPause (вращение, щелчок кнопки дома и т. Д.) – PedroHawk
Проблема не в том, что касается состояний. Мне ничего не нужно ничего спасать. –
Я должен сказать, что PedroHawk прав .... проверьте эту ссылку http://stackoverflow.com/questions/10126845/handle-screen-rotation-without-losing-data-android –