Я только что скачал и проверил это приложение. Итак, вот что я думаю.
Похоже, вкладка меню Fragment
. Давайте назовем это MenuMainFragment
. Нажав, например, на Drinks, мы собираемся открыть что-то вроде MenuGroupFragment
, и наш предыдущий фрагмент добавляет в backstack. Пока мы находимся в MenuGroupFragment
, мы также можем щелкнуть по любому элементу, и, наконец, появляется MenuItemsFragment
(MenuGroupFragment
также собирается вернуться назад). Нажатие на любой элемент здесь заставляет нас открыть ItemActivity
, очевидно. Так что в любом случае есть 3 уровня глубины. На мой взгляд, все фрагменты в нашем «потоке» создаются путем передачи в него некоторой информации. Например, в MenuGroupFragment
мы передаем что-то вроде «subgroupId», а затем находим все, что связано с «subgroupId», в нашей базе данных и так далее. На мой взгляд, это наиболее очевидный случай.
Менее очевидный случай может иметь только один Fragment
со своим собственным управлением потоком данных, что является более сложным и может быть достигнуто многими различными реализациями. Вероятно, это может быть достигнуто с помощью Map<Int, List<Element>>
, где ключ карты - ваш шаг, а значение - список элементов, связанных с этим шагом. Я думаю, что будут некоторые проверки, если это первый шаг или нет, чтобы изменить значок панели инструментов, название и поведение onBackPressed()
.