Я делаю навигацию в моем приложении, используя навигационный компонент из Jetpack.В моем приложении 3 экрана, все они реализованы с помощью фрагмента:
- экран поиска
- экран списка
- экран подробностей
Когда пользователь нажимает кнопку поиска (на search screen
),приложение переходит к list screen
загружает результаты и отображает их.Пользователь выбирает один из результатов и переходит к detail screen
.Если результат только один, приложение автоматически переходит от list screen
к detail screen
, фактически пропуская экран списка.
Проблема заключается в обратной навигации: когда было несколько результатов, мне нужно вернуться к list screen
, но если был только один результат, мне нужно вернуться обратно к search screen
.Я хочу просто позвонить navigateUp
, но это приведет меня к list screen
(во всех случаях) и затем к detail screen
, если будет только один результат.
При непосредственном использовании FragmentTransaction
мыможет replace
текущий фрагмент с и вызывать addToBackStack
только если мы хотим вернуться к нему позже.При использовании компонента навигации мы можем просто navigate
, и он ведет себя как replace
+ addToBackStack
.
Как я могу добиться поведения замены без добавления в backstack, используя компонент архитектуры?