Сохранять действие root даже после запуска нового действия и очистки заднего стека
Я буду начинать деятельность в следующих сериях:
A-> B-> C-> D Теперь я хочу начать другое действие, предположим, что E из D, и очистить стек, но оставить действие A в качестве корневого действия. После запуска E стек должен быть A->E. Как мне этого добиться?
2 ответа
Решение
Вы можете достичь этого с помощью TaskStackBuilder. Этот чувак позволяет перестраивать нужный вам стек. Вам нужно что-то вроде этого:
final Intent activityAIntent = new Intent(this, ActivityA.class);
activityAIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
TaskStackBuilder.create(this)
.addNextIntent(activityAIntent)
.addNextIntent(new Intent(this, ActivityE.class))
.startActivities();
Когда вы начинаете упражнение E с D, сначала снимите флажок top Или finishAffinity(). Так что все ваши предыдущие действия закрыты. и откройте первое действие от backpress.
Добавьте метод OnBackPressed в E Activity.
Как это
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(getApplicationContext(), AActivity.class);
startActivity(intent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
finishAffinity();
} else {
finish();
}
}