В моем приложении у меня есть xml-макет с именем activity_menu, к которому приложение сначала загружается. На этом у меня есть кнопка, которая устанавливает представление содержимого в класс GameView, который расширяет представление. Отсюда я хотел бы нажать кнопку андроида назад и вернуться к activity_layout, однако в настоящее время приложение просто закрывается. Как я могу решить это?Нажатие кнопки «Назад» из пользовательского макета закрывает приложение вместо возврата на предыдущий экран.
ответ
Вы можете сделать вот так. Сначала вы слушаете, когда пользователь нажимает кнопку на onBackPressed
. Затем, когда пользователь нажимает кнопку назад, вы будете проверять, если Gameview виден или нет, если она видна, вы должны скрыть его без финиша Activity
@Override
public void onBackPressed() {
if(//gameView is visible){
// hide gameview without finish Activity
}else{
super.onBackPressed();
}
}
Привет, да, большинство вещей, которые я видел, похоже, предлагают похожие, но я, похоже, не могу использовать onBackPressed() в своем классе gameView, поскольку он не распознается – JCH1530
переопределить 'onBackPressed()' внутри Активность, которая содержит игровое поле –
С BackButton перемещаться к предыдущей деятельности ... Что же касается это я получаю ваше приложение ваш Gameview тот же активность, так что предыдущий ваш домашний экран:
вы можете переопределить метод onBackPress() в вашей деятельности:
@Override
void onBackPress(){
if(contentView is gameview){
-> back to activity layout
}else{
super.onBackPress()
}
}
Обновление:
Чтобы проверить, если ваш Gameview включен, то вы можете использовать простой логический флаг, или visibilty в Gameview, если вы работаете с скрытию и
Я думаю, что вы есть буксировочный активность: MenuActivity (первая активность) и GameActivity (второй деятельности), правильно? В этом случае вы должны завершить функцию MenuActivity при переходе на GameActivity.
Пример кода:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MenuActivity.this, GameActivity.class));
MenuActivity.this.finish();
}
});
вы должны расчистили приложение историю деятельности или заканчивает последнюю активность на старте другой деятельности. Проверьте это сначала –