Возобновление деятельности из другой деятельности

У меня есть 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);
Другие вопросы по тегам