РЕШЕНО
Я не знаю, правильно ли я объяснил проблему, но я нашел решение.
Как я сказал в вопросах, которые я слышал о замене фрагмента, и это основной момент для решения проблемы этого типа.
Я заменил в коде использование navController
на FragmentTransaction
, этот объект позволяет полностью заблокировать стек увеличивать с помощью метода disallowAddToBackStack()
. Я не знаю почему, но эта функция нигде не упоминается, я нашел ее сам, глядя в объект метода.
Используя эту функцию, стек блокируется следующим образом:
stack: [A] stack: [B] stack: [A]
(click on link) -> (click on link) -> (click on link) -> ...
итак когда я пу sh кнопка возврата, приложение закрывается, как я хочу.
ПРЕДЛОЖЕНИЕ
Используйте navController
, если у вас более двух фрагментов и вы хотите создать логический путь между этими фрагментами, поэтому, когда пользователь pu sh нажимает кнопку возврата, вы можете позволить пользователю go вернуться до безопасной точки на пути.
Используйте FragmentTransaction
в в сочетании с методом disallowAddToBackStack()
, когда у вас есть несколько фрагментов, но вам не нужен какой-то стратегический путь между ними, другими словами, вы просто показываете что-то пользователю, и вам все равно, если пользователь pu sh назад кнопка. Метод ДОЛЖЕН использоваться во всех фрагментах, которые не нужно помещать в стек.