#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, если вам нужно ))) Удачного кодирования!