Android | Фрагмент навигационного треугольника

#android #android-fragments #navigation

#Android #android-фрагменты #навигация

Вопрос:

У меня есть то, что я считаю относительно простой проблемой. Я получил только одно действие с тремя фрагментами в нем (показывая только один в данный момент времени). Итак, это мои фрагменты

  1. ЗАКАЗЫ (показывает список заказов)
  2. ДЕТАЛИ ЗАКАЗА
  3. НОВЫЙ ЗАКАЗ (показывает форму для создания нового заказа)

Итак, я думаю, мы все знаем, какой должна быть навигация между ними. Однако у меня возникли некоторые проблемы с обратной навигацией. Вот что происходит.

1 -> 3 -> 2 [<] ничего не происходит [<] возвращается к Android :/

* [<] = [пользователь нажимает клавишу возврата].

Я провел некоторое исследование, и я знаю, что есть некоторые методы, которые я должен использовать, среди них:

.добавить .заменить транзакцию.addToBackStack(null)

(Я не совсем понимаю, что делает этот последний, но, похоже, он сохраняет транзакцию, чтобы я мог вернуться, что было бы тем же ass .add?).

Спасибо и оставляйте любые комментарии ниже, я могу добавить любую соответствующую информацию, если это необходимо.

Ответ №1:

Разница между add() и replace() заключается в том, что replace() удаляет фрагмент в контейнере, а затем добавляет в него новый фрагмент, в то время как add() просто добавляет. Если вы хотите перемещаться между фрагментами, вам следует использовать addToBackStack().

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

1. Спасибо, но должен ли я всегда использовать addToBackStack?. Вот что происходит, может быть, я был недостаточно ясен 🙂 — Когда я выбираю «новый заказ», появляется форма, которая после отправки должна уничтожить форму (3. новый заказ) и перенаправить пользователя на 2 (детали заказа). Проблема возникает, когда я нажимаю клавишу возврата, вместо того, чтобы вернуться к 1, она ничего не делает, я нажимаю ее снова, и она переходит на Android. :/

2. Если вы хотите вернуться к предварительному фрагменту при нажатии кнопки «Назад», вы всегда должны использовать addToBackStack() .