Организация приложения с "разделами"/табами

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
androkettle
Сообщения: 1
Зарегистрирован: 02 окт 2020, 14:07

Организация приложения с "разделами"/табами

Сообщение androkettle » 02 окт 2020, 14:37

Здравствуйте, подскажите, как организовать архитектуру следующего приложения.

Есть несколько основных разделов, скажем, "новости", "сервисы", "профиль".
В каждом может быть несколько различных экранов (список новостей -> конкретная новость).
Внизу панель навигации, там кнопки переключающие между разделами (как табы).

Хочется, чтобы "табы" сохраняли своё состояние.
То есть, открыл новость, перешёл в профиль, вернулся в новости и там по прежнему висит открытая новость.
И кнопка "назад" работала в рамках конкретного раздела.

Моё решение на данный момент:

* Одно активити
* Внизу фрагмент с навигацией
* Остальная часть экрана - FrameLayout, в котором три контейнера под каждый раздел. Один visible, другие invisible
* Фрагмент навигации переключает видимость контейнеров и, при первом показе контейнера, в него вставляется некий "дефолтны" для раздела фрагмент (список новостей)
* Далее тот фрагмент уже сам переходит по страницам с помощью fragmentManager + addToBackStack

В принципе, всё работает как надо, кроме кнопки "назад".

* В первом разделе переходим в конкретную новость
* Переключаемся на другой раздел и там куда-то переходим
* Возвращаемся в первый - видим открытую ранее новость
* Жмём "назад", ожидая, что вернёмся в список новостей
* Но, ясное дело, вместо этого откатывается переход в другом (скрытом) контейнере

Ответить