Возврат к действию A с момента завершения действия D с сохранением активности B и C

#android #android-activity #back-button #activity-finish

#Android #android-активность #кнопка возврата #действие-завершение

Вопрос:

У меня есть 5 действий (A, B, C и D).

A -> B -> C -> D

  • При выполнении действий B и C, если мы нажмем кнопку возврата, я бы хотел, чтобы предыдущее действие было вызвано (соответственно A и B).

  • Действие D — это завершающее действие без кнопки возврата. Когда я использую «finish ()», в настоящее время он возвращается к действию C.

Я хотел бы вернуться непосредственно к действию A, когда мы достигнем действия D, выполнив finish(), не проходя через B и C.

Однако, поскольку B я всегда должен иметь возможность вернуться к A, и C тоже может вернуться к B.

  • «A» — это действие в режиме запуска singleTop.

  • android: noHistory = true при выполнении действия D не позволяет мне вернуться непосредственно к A.

Единственное решение, которое я нашел на данный момент, — это использовать startActicity (A) вместо «finish ()», но я считаю, что это решение не является хорошим вариантом.

У вас есть решение моей проблемы?

Ответ №1:

В вашей общей деятельности используйте это:

 Intent i = new Intent(this, YourFirstActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
  

Таким образом, вы вернетесь точно к своему действию A.

Комментарии:

1. Он хочет вернуть действие A из D, но сохранить B, C в фоновом режиме. С помощью вашего кода он удалит B, C из backstack.

2. Нет, это именно то, что я ищу. После того, как на D, я не хочу получать доступ к B или C.

3. Да! Поскольку бессмысленно хранить B и C в backstack, они оба будут воссозданы, если вы снова перейдете к ним из действия A ))) Но вы должны использовать onSaveInstanceState() и onRestoreInstanceState() для сохранения состояния B и C activitys, если вам нужно ))) Удачного кодирования!