Я уже 3 дня безуспешно пытаюсь исправить ошибку в своем приложении. Проблема в том, что переменная экземпляра назначается волшебным образом.
Приложение представляет собой многопользовательскую игру по Bluetooth, в которой игроки по очереди. По окончании игры отображается диалоговое окно с вопросом о продолжении игры. Поэтому, когда игрок 1 продолжает, игроку 2 отправляется сообщение, чтобы уведомить, что игрок 1 хочет продолжить. Переменная противникаContinued становится истинной. И когда игрок 2 щелкает "Продолжить", если оппонентContinued равен true, игра перезапускается.
Эта проблема :
Когда диалог показан обоим игрокам и игрок 1 поворачивает экран, игрок 2 нажимает кнопку «Продолжить», игрок 1 получает уведомление, и «оппонентпродолжен» присваивается значение «истина». ПОСЛЕ этого, когда игрок 1 нажимает кнопку «Продолжить» и (оппонентContinued должен быть истинным) проверяет, истинно ли «оппонентконтинуед», обнаруживает, что «оппонентконтинуедед» ложно.
Все нормально работает, если нет вращения.
Затем, чтобы прояснить ситуацию, я сделал фиктивную переменную, чтобы отслеживать, когда и как назначается «оппонентContinued», и каждый раз, когда она назначается, я делал dummyBoolean равным «оппоненту». Я сделал dummyBoolean истинным по умолчанию. В методах onContinueClicked значение dummyBoolean истинно, а оппонентContinued - ложно.
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
}
}
}
Понятия не имею, в чем может быть проблема. Кто-нибудь сталкивался с такой проблемой? Любая помощь приветствуется.
ИЗМЕНИТЬ
Обратите внимание, что проблема не связана с сохранением состояний во время поворота экрана. Проблема в том, что переменной «оппонентContined» «волшебным образом» присваивается значение по умолчанию false после того, как оно установлено в true.
Я знаю, что это звучит нереально, но это испортило мне много времени.