Size: a a a

Cicerone Chat (RUS)

2018 October 26

NY

Nikita Yatskivskiy in Cicerone Chat (RUS)
Всем привет) Задача - необходимо реализовать навигацию, аналогичную инстаграмму. Для навигации по нижнему меню есть BottomMenuFragment с контейнером для фрагментов R.id.container_menu и есть MainActivity с контейнером R.id.fragment_container. BottomMenuFragment располагается в контейнере R.id.fragment_container. В таком случае, получается, нужно два роутера? Один, чтобы менять фрагменты в R.id.container_menu, а второй в R.id.fragment_container?
источник

NY

Nikita Yatskivskiy in Cicerone Chat (RUS)
И два навигатора, получается?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
менять местами контейнеры - это не навигация)
а для каждого таба да, нужен свой роутер с навигатором и тд
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
представьте, что все табы отображаются одновременно
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
станет проще представлять
источник

NY

Nikita Yatskivskiy in Cicerone Chat (RUS)
Когда у BottomMenuFragment вызывается onDestroyView, например, когда перехожу на другой экран, то при возврате на BottomMenuFragment будут все табы пересоздаваться, из-за чего лаги появляются… Можно ли в Cicerone как-то сделать переход вперёд с использованием show/hide в транзакции фрагмент менеджера?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
написать свой навигатор.
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
но у нас точно такой же кейс
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
и мы не пересоздаем все табы
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
а только тот, что сейчас выбран
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
для этого у фрагментов есть userVisibleHint
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
это несколько оптимизирует ваш кейс
источник

PS

Pavel Sukhoterin in Cicerone Chat (RUS)
А что с поддержкой AndroidX? я вижу issue, поискал по чату, кроме https://gist.github.com/dns21395/5dabba4a3e9b2692769c13710fffe227 ничего не нашел
источник

B

Boozy Urban 😏 in Cicerone Chat (RUS)
Pavel Sukhoterin
А что с поддержкой AndroidX? я вижу issue, поискал по чату, кроме https://gist.github.com/dns21395/5dabba4a3e9b2692769c13710fffe227 ничего не нашел
А что просто так с Jetify флагом не работает?
источник

IS

Ilya Smirnov in Cicerone Chat (RUS)
Boozy Urban 😏
А что просто так с Jetify флагом не работает?
Неа. Только если самому классы ручками подменять
источник

B

Boozy Urban 😏 in Cicerone Chat (RUS)
Ilya Smirnov
Неа. Только если самому классы ручками подменять
Не знаю, у меня с флагом всё работает, только студия красным подсвечивает.
источник

IS

Ilya Smirnov in Cicerone Chat (RUS)
И все же по поводу поддержки многомодульности. Теперь создание фрагмента/активити делегировано классу-наследнику supportAppScreen. Ок, если мы имеем модули, то эти классы могут находиться лишь в 2 местах - в модуле конкретной фичи или в app. В обоих вариантах нет возможности запустить из одной фичи экран другой фичи, т.е. в featureA никак не сделать router.navigateTo(SomeScreenFromFeatureB), т.к. фичи не должны ничего знать друг о друге. С ключами-стрингами это не было проблемой по очевидным причинам, ключи обрабатывались в app. Теперь как быть?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
где у вас раньше лежали ключи экранов?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
когда модуль А запускал экран модуля Б, то где он узнавал про ключ из модуляБ?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
для этого создается слой - медиатор, который связывает фичи модули вместе
источник