Итак, у меня есть эти два экрана: экран сообщений и экран игры. Я хочу, чтобы когда пользователь переключается обратно с любого экрана, он возобновляет предыдущее действие.
Это фрагмент кода на моем игровом экране, который позволяет пользователю перейти на экран сообщений:
public void onMessagesButtonClick() {
Intent intent = new Intent(this, Messages.class);
startActivity(intent);
overridePendingTransition(0, 0);
}
И это небольшой фрагмент кода, который позволяет пользователю вернуться с экрана сообщений на экран игры.
public void onGameButtonClick() {
Intent intent = new Intent(getApplicationContext(), Game.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
overridePendingTransition(0, 0);
}
Пока я могу перейти с экрана игры на экран сообщений, затем перейти с экрана сообщений и возобновить работу на экране игры.
Проблема в том, что я не могу возобновить активность с экрана сообщений, только с экрана игры. Если бы я обновил onMessagesButtonClick() до:
public void onMessagesButtonClick() {
Intent intent = new Intent(getApplicationContext(), Messages.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
overridePendingTransition(0, 0);
}
Я больше не смогу возобновить активность с экрана игры. Это будет так, как если бы я впервые зашел на экран, запустив его заново.
Что я могу сделать, чтобы иметь возможность возобновить предыдущую активность на обоих экранах при переходе между экранами?
@Bert Hanz: Я думаю, вы должны понимать с использованием флага намерения для начала деятельности
Переопределите onBackPressed(), чтобы перейти к правильному экрану.




Попробуй это
public void onGameButtonClick() {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
setResult(RESULT_OK, intent);
finish();
overridePendingTransition(0, 0);
}
на вашем игровом классе
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
//If you are going to fetch data from former activity
}
}
}
Используйте onSaveInstanceState, чтобы сохранить состояние действия и вернуть состояние в пакете savedInstanceState в onCreate (). Это не так уж и сложно.