Size: a a a

Cicerone Chat (RUS)

2020 November 02

PK

Paul Kugaev in Cicerone Chat (RUS)
Konstantin Tskhovrebov
Так это надо просто у фрагмент менеджера узнать
Хотелось бы отойти от использования фрагмент менеджера ручками и скрыть все за чичероном. Собсна код из семпла selectTab я уже вынес в кастомную команду
источник

AB

Aleksei B. in Cicerone Chat (RUS)
А что если в навигаторе дать возможность отлавливать onExit()?
источник

PK

Paul Kugaev in Cicerone Chat (RUS)
Aleksandr Litvinchuck
Так вот у флоу фрагмента зачастую не переопределяют бекпресед интерфейс, а можно
Да, но тогда бекпрессед будет вызывать роутер.екзит() который ничего не возвращает
источник

PK

Paul Kugaev in Cicerone Chat (RUS)
Aleksei B.
А что если в навигаторе дать возможность отлавливать onExit()?
Вот только если так. В этом и вопрос. Как?)
источник

AL

Aleksandr Litvinchuc... in Cicerone Chat (RUS)
Насколько я знаю Костя рекомендует делать кастомный навигатор в крайних случаях и это явно не он
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Если стандартная раеализация навигатора будет вместо завершения активити вызывать:
fun onExit() : Boolean = false
то если onExit вернул false, тогда завершить активити, если true, то ничего не делать

Тогда можно будет переопределить onExit в навигаторе и вызывать роутер родительской иерархии
источник

PK

Paul Kugaev in Cicerone Chat (RUS)
Aleksei B.
Если стандартная раеализация навигатора будет вместо завершения активити вызывать:
fun onExit() : Boolean = false
то если onExit вернул false, тогда завершить активити, если true, то ничего не делать

Тогда можно будет переопределить onExit в навигаторе и вызывать роутер родительской иерархии
Окей, но сам метод exit() у роутера не возвращает ничего. Он лишь запускает команду. Или надо слушать навигатор, но вызывать методы роутера?
источник

AL

Aleksandr Litvinchuc... in Cicerone Chat (RUS)
Paul Kugaev
Вот только если так. В этом и вопрос. Как?)
Как у вас реализован бекпресед в фрагменте? Через интерфейс как в семпле?
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Paul Kugaev
Окей, но сам метод exit() у роутера не возвращает ничего. Он лишь запускает команду. Или надо слушать навигатор, но вызывать методы роутера?
он и не должен ничего возвращать, он лишь отдает команду, а выполняет ее Navigator
источник

PK

Paul Kugaev in Cicerone Chat (RUS)
Aleksandr Litvinchuck
Как у вас реализован бекпресед в фрагменте? Через интерфейс как в семпле?
Нет, через onBackPressedDispatcher
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Paul Kugaev
Всем привет! Возник такой вопрос. Кто нибудь пытался связать два разных роутера? Цель такова: модифицировать сэмпл с BottomNavigationView так, чтобы на табе, в которой локальный роутер с пустым бекстеком (то бишь там только рутовый скрин), по нажатию на назад не закрывать активити, а переходить к другой табе
Если надо что-то с табами сделать, то самый простой способ это переопределить метод activityBack() в AppNavigator, который отвечает за навигацию в табе. Внутри activityBack() не звершать активити, а сделать то, что нужно
источник

PK

Paul Kugaev in Cicerone Chat (RUS)
Aleksei B.
Если надо что-то с табами сделать, то самый простой способ это переопределить метод activityBack() в AppNavigator, который отвечает за навигацию в табе. Внутри activityBack() не звершать активити, а сделать то, что нужно
Окей. Допустим в навигаторе надо вернуть либо "да, у меня пустой бекстек", либо "нет, не пустой". И вернуть это фрагменту. Во фрагменте же используется сугубо роутер. Метод exit() и роутера возвращает void
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Так
источник

AB

Aleksei B. in Cicerone Chat (RUS)
все что я писал выше, кроме переопределения activityBack() можно не смотреть
источник

AB

Aleksei B. in Cicerone Chat (RUS)
В Cicerone есть AppNavigator
источник

AB

Aleksei B. in Cicerone Chat (RUS)
У него есть activityBack()
источник

AB

Aleksei B. in Cicerone Chat (RUS)
он вызывается тогда, когда надо сделать activity.finish()
источник

AB

Aleksei B. in Cicerone Chat (RUS)
для того, чтобы не выходить из приложения, а выполнить кастомную логику, надо просто перехватить вызов activity.finish() и заменить своей логикой
источник

AB

Aleksei B. in Cicerone Chat (RUS)
чтобы этого добиться надо переопределить activityBack()
источник

AB

Aleksei B. in Cicerone Chat (RUS)
все
источник