Мое приложение в настоящее время застревает в бесконечном цикле с физической кнопкой возврата. Программа настроена для загрузки заставки, а затем перехода в главное меню. Как только в главном меню пользователь может переключиться на другое действие по своему выбору. Например: Новая игровая активность. Как только пользователь начнет новую игру, я хочу, чтобы они смогли нажать кнопку «Назад» и перенести их в главное меню. Вернувшись в главное меню, если они снова нажали кнопку «Назад», мне бы хотелось, чтобы он вышел из игры.Задняя кнопка застряла в бесконечной петле?
Это то, что я использую для каждого вида деятельности:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
startActivity(new Intent(NewGameActivity.this, MenuActivity.class));
}
return super.onKeyDown(keyCode, event);
}
Он работает должным образом и направляет пользователя к главному меню без проблем. Но если пользователь снова нажимает кнопку «Назад» один раз в главном меню, он доставит их на экран, с которого они только что сбежали. Таким образом, он каждый раз возвращается к предыдущему экрану.
Это как главное меню настройки:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
stopService(new Intent(MenuActivity.this, BGMusicService.class));
MenuActivity.this.finish();
}
return super.onKeyDown(keyCode, event);
}
Если я нажимаю кнопку назад, как только главное меню загружает первый раз, когда он будет работать должным образом и закрыть игру. Это только испортится, если я нажал кнопку «Назад» ранее, чтобы перейти с одного экрана на главное меню.
Обновление:
Хорошо, что это сработало. Когда я нажимаю кнопку «Назад» на главном экране, музыка останавливается, и она действует так, как будто она пытается закрыть приложение, но снова возвращается к главному экрану. Я должен ударить его дважды каждый раз.
Если вы добавите 'return true;' в нижней части обоих операторов 'if', работает ли оно так, как ожидалось? – Eric
возвращает true вместо возврата super.onKeyDown (keyCode, event); ? – Rhendar
Нет. Оставьте 'super.onKeyDown' таким, какой он есть, и' return true; 'должно быть * внутри * операторов' if'. – Eric