Возобновление деятельности из другой деятельности
У меня есть MenuActivity с кнопками "новая игра" и "возобновить". "Новая игра" запускает FireRoomActivity.
public void newGame(View view){
Intent intent = new Intent(this, FireRoomActivity.class);
this.finish();
startActivity(intent);
}
В FireRoomActivity onBackPressed переопределяется, чтобы вернуться к MenuActivity.
@Override
public void onBackPressed() {
super.onBackPressed();
Intent inMain=new Intent(this, MenuActivity.class);
startActivity(inMain);
}
Кнопка "возобновить" в MenuActivity должна возобновить FireRoomActivity. Но это только что выходит из приложения.
public void resume(View view){
this.finish();
}
Q1) Что я делаю не так?
В2) Если я добавлю третье действие "ThreeActivity" и начну его с FireRoomActivity(завершение FireRoomActivity), и в этом переопределении "ThreeActivity" onBackPressed перейдет в MenuActivity, как мне это сделать?
Я новичок в жизненном цикле Android, поэтому я был бы признателен за подробный ответ
5 ответов
**Try This**
======================
public void onBackPressed() {
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
finish();
}
1) Вы балуетесь с естественным порядком. Нет необходимости вызывать "финиш" в методе "Новая игра".
Просто оставьте активность в стеке, чтобы вы могли вернуться к ней при нажатии клавиши возврата. Тогда вам не нужно запускать новое действие, когда нажата кнопка "Назад", потому что вы уже вернетесь к тому действию, которое у вас уже есть.
Ваш метод резюме вызывает финиш и поэтому закрывает меню. Вместо того, чтобы "заканчивать" меню, введите свой код, чтобы возобновить игру.
2) Изучите Жизненный цикл Деятельности. Как только вы поймете это, вы справитесь с этим гораздо лучше. Нет необходимости завершать действие, когда вы начинаете другое, если собираетесь вернуться к нему. Думайте о них как о стеке. Вы кладете действия в стек, а кнопка "Назад" снова отбрасывает их назад. Вы заканчиваете занятие только тогда, когда полностью его завершили и больше не хотите его видеть.
Пытаться:
@Override
public void onBackPressed() {
Intent inMain=new Intent(this, MenuActivity.class);
startActivity(inMain);
}
onBackPressed () сам завершает деятельность. В этом случае, если вы нажмете кнопку "назад" в FireRoomActivity, она всегда будет приостановлена. Так что, если вы хотите закончить это, вам нужно будет вызвать finish();
Переоцените это в вашем ThreeActivity
@Override
public void onBackPressed() {
Intent intent=new Intent(this, MenuActivity.class);
startActivity(intent);
}
Для получения дополнительной информации о ссылке, перейдите по этой ссылке
Удалить super.OnBackPressed()
в переопределенном методе onBackPressed.
Если это не работает, попробуйте это:
Запустите FireRoomActivity с синтаксисом при нажатии кнопки возобновления
Intent i = new Intent(getActivity(), FireRoomActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(i);