Как закрыть / завершить первое действие при переходе от первого действия ко второму с помощью навигационного компонента Android

#android #android-activity #android-architecture-components #android-architecture-navigation

#Android #android-activity #android-архитектура-компоненты #android-архитектура-навигация

Вопрос:

Я впервые использую навигационный компонент Android, а также я новичок в компоненте архитектуры Android. Насколько я видел, навигационный компонент в архитектуре Android использует fragment преимущественно для навигации в рамках одного и того же действия. Я пытался перейти от одного действия к другому с помощью навигационного компонента:

 activity.finish()              
Navigation.findNavController(btnView).navigate(R.id.activity)
  

Здесь R.id.activity указан идентификатор действия, определенный в XML-файле navigation graph.

Когда я нажимаю кнопку «Назад», я все еще могу видеть предыдущий экран. Мой вопрос заключается в том, как работает обратный стек в навигационном компоненте и почему появляется мое первое действие, даже если вызывается метод destroy действия (из-за activity.finish() )?

Ответ №1:

Я могу ответить на вашу вторую часть за первую часть, кто-то, кто лучше поймет, объяснит вам.

Выполнение приведенного ниже метода не завершит ваше действие, потому что, если оно было завершено, вы не видите его в обратном стеке.

Активность.завершить ()

завершите текущее действие после метода навигации. Ниже будет показан правильный способ завершения текущего действия.

 btn.setOnClickListener{            
Navigation.findNavController(btnView).navigate(R.id.secondActivity)
(activity as currentActivity).finish()
}
  

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

1. Хайдер, явное приведение к типу с использованием оператора as не требуется. Я обнаружил ошибку, которую я сделал. Просто чтобы поделиться с вами ошибкой, которую я допустил, чтобы это могло принести пользу другим, я использовал два фильтра намерений для одного действия, я не использовал режим запуска singleTop, поэтому действие создается дважды, поэтому кажется, что действие не уничтожено