Сохранять действие 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();
        }
    }
Другие вопросы по тегам