Size: a a a

Cicerone Chat (RUS)

2018 May 10

P▽

Picty ▽ in Cicerone Chat (RUS)
Думаю тут суть не в коммандах, а именно в выполнении перехода/смены фрагментов fragmentManager'om
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
и по сути - дергать именно сам фрагмент из fragmentManager'a сильно смысла нет(ну если не нужен сам фрагмент) - можно ведь и по screenKey понять на какой фрагмент комманда пришла.
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
надо
1) использовать последнюю версию либы
2) смотреть фрагмент после применения всех навигационных команд (applyCommands)
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Там Hannes свой навигатор изобрел http://hannesdorfmann.com/android/coordinators-android. Чем-то похож на cicerone, только без команд.
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
надо
1) использовать последнюю версию либы
2) смотреть фрагмент после применения всех навигационных команд (applyCommands)
поменял, странно, но:
override fun applyCommands(commands: Array<out Command>?) {
       super.applyCommands(commands)

       val fragmentById: Fragment? = fragmentManager.findFragmentById(containerId)
       if(fragmentById != null) callback.onBackStackChanged(fragmentById)
   }


Кейс проблемы:
1) router.newRootScreen(F1)
2) F1 > router.newRootScreen(F2)

val fragmentById: Fragment? = fragmentManager.findFragmentById(containerId)
fragmentById = F1 !!!

почему-то таким образом достается ПРЕДЫДУЩИЙ фрагмент.

потому как если на F2 сделать router.newRootScreen(F1), то
fragmentById = F2 !!! а не F1
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
@terrakok странно это как-то ведь по логике дергаем менеджер после всех комманд. и значит в менеджере уже должен быть фрагмент нужный. Но судя по дебагу - это не так...
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Нет, так как фрагмент менеджер асинхронный
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
@terrakok ещё подебажил - когда мы самый первый раз заходим и задаем рут - в applyCommands - пустой стэк выходит...

>менеджер асинхронный
видимо придется как-то завязываться на screenKey...или есть иные идеи?
источник

KT

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

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Просто вызовите апплайПендинг
источник

P▽

Picty ▽ in Cicerone Chat (RUS)
Konstantin Tskhovrebov
Просто вызовите апплайПендинг
Спасибо!

override fun applyCommands(commands: Array<out Command>?) {
    super.applyCommands(commands)

    fragmentManager.executePendingTransactions()
    val fragmentById: Fragment? = fragmentManager.findFragmentById(containerId)
    if(fragmentById != null) callback.onBackStackChanged(fragmentById)
}
источник

SB

Stas Bushuk 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)
И убедитесь)
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Konstantin Tskhovrebov
И убедитесь)
Вот это хороший совет. Верить наслово кому-попало в чатике не очень хорошо. 😉
источник

SB

Stas Bushuk in Cicerone Chat (RUS)
Konstantin Tskhovrebov
Он и не пересоздается
убедился, тогда можно обойти жизненный цикл фрагмента ?
источник
2018 May 11

YA

Yelaman Aitymbet in Cicerone Chat (RUS)
Доброе утро! Ребята просмотрел сампл, там Router и NavigationHolder один во весь прект? Или отдельный для каждого активити, если для всего проекта один инстанс, то это правильная практика?
источник

YA

Yelaman Aitymbet in Cicerone Chat (RUS)
Yelaman Aitymbet
Доброе утро! Ребята просмотрел сампл, там Router и NavigationHolder один во весь прект? Или отдельный для каждого активити, если для всего проекта один инстанс, то это правильная практика?
Ребята, подскажите пожалуйста, как у вас проектах реализовано?
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
Видео из шапки посмотрите для старта и статью на хабре изучите. Там многое объяснено
источник