Size: a a a

Cicerone Chat (RUS)

2018 May 10

KT

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

AP

Alexey Pushkarev in Cicerone Chat (RUS)
мне наоборот кажется что слишком много команд, например не пойму зачем Replace? Мне всегда Forward хватало
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
почему всем не терпится создавать свои команды??
возможно я поторопился со своей командой - показалось это нагладнее.

по поводу инфы о стеке - так туда не кладется же рутовый фрагмент - потому это информация не нужна в данном случае.

>перед применением команд и после можете дергать любые коллбеки
ну в данном случае получится, что я отлавливаю Replace команду, которая теоретически, может юзаться НЕ только при переходе на Рут фрагменты. + проверять дополнительно screenKey - чтобы наверняка удостовериться, что это фрагмент из рутовых.

или я не так понял?
источник

KT

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

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
а там уже зависит от ваших задач
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
я о том, что любой коллбек на изменения стека можно создать в своем навигаторе
Согласен, он у меня и создан:

init{
       fragmentManager.addOnBackStackChangedListener{
           val fragmentById: Fragment = fragmentManager.findFragmentById(containerId)

           callback.onBackStackChanged(fragmentById)
       }
   }


любые иземнения стэка - отправляются в активити - НО при открытии рута - этот листенер не отработает. Получается нужна доп. логика для рутовых. Основанная на командах из applyCommand

верно?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
навигатор != фрагмент менеджер
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
навигатор != фрагмент менеджер
так, я и не говорил такого)
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
я вам про анализ стека в навигаторе
источник

KT

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

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
я вам про анализ стека в навигаторе
а) и правда)
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
я вам про анализ стека в навигаторе
посмотрел код, как понимаю, речь о localStackCopy
а как можно с ним работать - в плане узнавать о его изменениях в навигаторе?
источник

KT

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

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
речь о том, что в навигаторе можно посмотреть на текущий стек в fragmentManager
источник

KT

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

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
и по количеству принимать решение
что-то или я запутался или не в ту степь мы ушли - крато опишу задачу, чтобы было понимание:
- есть активити с меню - мы переходим по пунктам меню через newRootScreen
(раньше мы переходили с помощью navigateTo и в слушателе fragmentManager ловили фрагмент, на который идем - и подсвечивали пункт в меню, сворачивали меню и т.д.)

Теперь так не получится, потому как слушатель fragmentManager не срабатывает, потому как туда не кладется рутовый фрагмент.



Как поможет проверка количества фрагментов в fragmentManager - я не очень понимаю что-то...
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
переопределяете навигатор. и после накатки команд берете из контейнера текущий и по его инстансу подсвечиваете пункт
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
переопределяете навигатор. и после накатки команд берете из контейнера текущий и по его инстансу подсвечиваете пункт
м. звучит хорошо - спасибо, попробуемсЪ)
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
переопределяете навигатор. и после накатки команд берете из контейнера текущий и по его инстансу подсвечиваете пункт
в исходах не увидел - есть ли метод об окончании выполнения всех комманд?

Попробовал сделать в applyCommand после super:
val fragmentById: Fragment? = fragmentManager.findFragmentById(containerId)
if(fragmentById != null) callback.onBackStackChanged(fragmentById)


1) срабатывание на каждую команду - например на Back(null)
2) интересный баг-момент - мы зашли изначально на рутовый фрагмент 1 - далее переходим на рутовый фрагмент 2, выполнение комманд:
Back(null)
Replace("fragment2")


При этих двух коммандах:
val fragmentById: Fragment? = fragmentManager.findFragmentById(containerId)

fragmentById будет равен fragment1

Потому нужно как-то дожидаться окончания переходов и смены фрагментов.
источник