Я хотел бы сделать это с помощью «диспетчерской» механизма. Когда B
хочет начать C
, он должен вместо этого сказать A
сделать это следующим образом:
Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("startC", true);
// If B needs to pass additional parameters to C via A add them here
intent.putExtra("key1", value1);
intent.putExtra("key2", value2);
...
startActivity(intent);
Это завершит B
и A
, создать новый экземпляр A
и вызвать onCreate()
на новый экземпляр A
. В onCreate()
из A
, сделайте следующее:
super.onCreate(...);
Intent intent = getIntent();
if (intent.hasExtra("startC")) {
// Need to start C
intent.setClass(this, C.class);
startActivity(intent);
finish();
return;
}
Это заставит A
начать C
и закончить себя. Любые дополнительные функции, которые находятся в Intent
, будут переданы по адресу C
.
Когда A начинает B, должен ли A еще существовать? (т. е. может ли пользователь вернуться от B к A?). Кроме того, что должно произойти, когда пользователь нажимает BACK на C? –
A должен существовать, когда A запускает B, и когда пользователь нажимает на C, закроет приложение. –