Size: a a a

Cicerone Chat (RUS)

2020 June 30

DS

Dzmitry Sobolevsky in Cicerone Chat (RUS)
Victor Yakovlev
А в чем проблема?
наверно в том, что есть модули, которые не зависят друг от друга, но имеют  между собой переходы.
Я этот момент обрабатываю так: в каждом модуле создаю что-то типа interface ExampleNavigation{
fun goToProfile()
fun backToLogin()
...
}
и использую его внутри модуля.
Cicerone добавляю только в app модуль и в app модуле имплементирую все интерфейсы ...Navigation:
class ExampleNavImpl(val router:Router):ExampleNavigation{
override fun goToProfile(){router.navigateTo(Screens.ProfileScreen()}
...
}
Как-то так
источник

AA

Alidibir Akhbulatov in Cicerone Chat (RUS)
@JIO6CTEPok а как же SupportAppNavigator и NavigatorHolder, которые нужны на экране-контейнере? Если Чичероне добавить только в app модуль, то фичи-экраны (flow), не будут иметь доступа к ним
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Столкнулся с такой проблемой:
В моем проекте я использую SingleActivity и множество фрагментов. Каждый фрагмент наследуется от BaseFragment. При запуске приложения на активити в onCreate запускается первый фрагмент, потом я вызываю кнопкой второй фрагмент командой .navigateTo
Потом я делаю onBackPressed и возвращаюсь на первый фрагмент, но это происходит с пересозданием активити. Мне нужно, чтобы такого не было.
Вопрос: как мне сделать без пересоздания активити, как правильно настроить поведение onBackPressed для фрагментов?
В настоящий момень код не могу дать, т.к. я далеко от компа. Как приеду пришлю.
источник

АЕ

Алексей Ершов... in Cicerone Chat (RUS)
Звучит немного как дичь, откуда там пересоздание?
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Anton Pankratov
Столкнулся с такой проблемой:
В моем проекте я использую SingleActivity и множество фрагментов. Каждый фрагмент наследуется от BaseFragment. При запуске приложения на активити в onCreate запускается первый фрагмент, потом я вызываю кнопкой второй фрагмент командой .navigateTo
Потом я делаю onBackPressed и возвращаюсь на первый фрагмент, но это происходит с пересозданием активити. Мне нужно, чтобы такого не было.
Вопрос: как мне сделать без пересоздания активити, как правильно настроить поведение onBackPressed для фрагментов?
В настоящий момень код не могу дать, т.к. я далеко от компа. Как приеду пришлю.
Видимо где-то ошибка в коде. Лучше поделись кодом чтобы можно было понять где что-то не так
источник

DS

Dzmitry Sobolevsky in Cicerone Chat (RUS)
Alidibir Akhbulatov
@JIO6CTEPok а как же SupportAppNavigator и NavigatorHolder, которые нужны на экране-контейнере? Если Чичероне добавить только в app модуль, то фичи-экраны (flow), не будут иметь доступа к ним
если нужно - добавьте в core в базовый фрагмент.
Так то MainActivity и FlowFragment у меня тоже в app.
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Alexey Pushkarev
Видимо где-то ошибка в коде. Лучше поделись кодом чтобы можно было понять где что-то не так
Да, как дома буду, отправлю в обяз. Сделаю схемку еще смены экранов - там есть еще то, что не написал в вопросе
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Anton Pankratov
Да, как дома буду, отправлю в обяз. Сделаю схемку еще смены экранов - там есть еще то, что не написал в вопросе
👍
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Вообщем, я нашел у себя проблему - запускается дополнительный метод, который пересоздает активити.
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Теперь другой вопрос
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Это структура моей апы
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
что внутри зеленой области - это видит юзер. Есть у меня два флоу.
Вопрос: как возможно правильно организовать переходы по роутерам между 2fragment и 3fragment&
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Anton Pankratov
что внутри зеленой области - это видит юзер. Есть у меня два флоу.
Вопрос: как возможно правильно организовать переходы по роутерам между 2fragment и 3fragment&
Fragment2:
btn.setOnClickLister { FlowFragment1.onBtnPressed() }

FlowFragment1.onBtnPressed:
MainActivity.onSomeThingHappened()

MainActivity.onSomeThingHappened:
router.newRootScreen(FlowFragment2)
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Т.е. у меня есть 3 роутера: app, first и second
По firstRouter 1frag переходит во 2frag, а переход на 3frag происходит по appRouter, который сразу же стартует 3frag, но уже с secondRouter
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Anton Pankratov
Т.е. у меня есть 3 роутера: app, first и second
По firstRouter 1frag переходит во 2frag, а переход на 3frag происходит по appRouter, который сразу же стартует 3frag, но уже с secondRouter
нужно передать уведомление о том, что что-то произошло до MainActivity, а она через ApplicationRouter сделает свое грязное дело
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Fragment2:
btn.setOnClickLister { FlowFragment1.onBtnPressed() }

А это уничтожит из стека 1frag?
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Anton Pankratov
Fragment2:
btn.setOnClickLister { FlowFragment1.onBtnPressed() }

А это уничтожит из стека 1frag?
да, там же вся ветка будет уничтожена (FlowFragment1: Frag1 -> Frag2)
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Тут еще такое:
Я прописал в MainActivity метод onBackPressed таким образом -

if (currentFragment is BaseFragment)
    (currentFragment as? BaseFragment)?.onBackPressed()

Когда я нажму на такую кнопку, то по возвращению на прерыдущий экран будут ли мне виден текст, который пользователь вводил ранее? Типа onSavedState
источник

AP

Anton Pankratov in Cicerone Chat (RUS)
Прошу прощения, вопрос отменяю - разобрался))
источник