#android #android-fragments #navigation
#Android #android-фрагменты #навигация
Вопрос:
У меня есть то, что я считаю относительно простой проблемой. Я получил только одно действие с тремя фрагментами в нем (показывая только один в данный момент времени). Итак, это мои фрагменты
- ЗАКАЗЫ (показывает список заказов)
- ДЕТАЛИ ЗАКАЗА
- НОВЫЙ ЗАКАЗ (показывает форму для создания нового заказа)
Итак, я думаю, мы все знаем, какой должна быть навигация между ними. Однако у меня возникли некоторые проблемы с обратной навигацией. Вот что происходит.
1 -> 3 -> 2 [<] ничего не происходит [<] возвращается к Android :/
* [<] = [пользователь нажимает клавишу возврата].
Я провел некоторое исследование, и я знаю, что есть некоторые методы, которые я должен использовать, среди них:
.добавить .заменить транзакцию.addToBackStack(null)
(Я не совсем понимаю, что делает этот последний, но, похоже, он сохраняет транзакцию, чтобы я мог вернуться, что было бы тем же ass .add?).
Спасибо и оставляйте любые комментарии ниже, я могу добавить любую соответствующую информацию, если это необходимо.
Ответ №1:
Разница между add() и replace() заключается в том, что replace() удаляет фрагмент в контейнере, а затем добавляет в него новый фрагмент, в то время как add() просто добавляет. Если вы хотите перемещаться между фрагментами, вам следует использовать addToBackStack().
Комментарии:
1. Спасибо, но должен ли я всегда использовать addToBackStack?. Вот что происходит, может быть, я был недостаточно ясен 🙂 — Когда я выбираю «новый заказ», появляется форма, которая после отправки должна уничтожить форму (3. новый заказ) и перенаправить пользователя на 2 (детали заказа). Проблема возникает, когда я нажимаю клавишу возврата, вместо того, чтобы вернуться к 1, она ничего не делает, я нажимаю ее снова, и она переходит на Android. :/
2. Если вы хотите вернуться к предварительному фрагменту при нажатии кнопки «Назад», вы всегда должны использовать addToBackStack() .