Size: a a a

Cicerone Chat (RUS)

2020 September 14

AD

Aleksey D. in Cicerone Chat (RUS)
Arsen CeH9
это ведь работает и для нескольких exit
да, это аргумент про то, что не будет ситуации, как с exitTo - когда предыдущий экран в качестве параметра отдаешь
источник

AC

Arsen CeH9 in Cicerone Chat (RUS)
Aleksey D.
да, я тоже не понял этот момент
тип связь между аргументов и зависмостями - стрем

в том же чичероне - два разных экрана с разными реализациями фрагмента
но у Аркадия подход такой, что фича максимально изолирована от всего и может сразу несколько имплементаций для одного экрана давать
и ты извне просто открываешь профиль с айдишником, а профиль уже сам решает, какие ему зависимости нужны для айдишника (свой/чужой)
я уже не говорю, про инжект репозитория во фрагмент. Это может отпугнуть гугла от серьезного восприятия статьи, тем более что они проповедуют вьюмодель с более подходящим жизненным циклом. Плюс есть ВМ  с аргументами (которая еще в альфе)
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Arsen CeH9
я уже не говорю, про инжект репозитория во фрагмент. Это может отпугнуть гугла от серьезного восприятия статьи, тем более что они проповедуют вьюмодель с более подходящим жизненным циклом. Плюс есть ВМ  с аргументами (которая еще в альфе)
не, ну тут фишка в том, что у тебя есть изолированная фича, которая извне получает репозиторий, а все остальное сама внутри собирает
источник

AD

Aleksey D. in Cicerone Chat (RUS)
у тебя компоненты так же устроены
источник

AC

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

AD

Aleksey D. in Cicerone Chat (RUS)
Arsen CeH9
у гугла, в гайде к архитектуре, свое виденье "репозитория", насколько я помню суть репозитория не раскрыта в статье, что может ввести в заблуждение
Retrofit API и Room DAO - уже есть репозитории
источник

AC

Arsen CeH9 in Cicerone Chat (RUS)
это да, но я про конкретную сущность  из гайда гугла

https://developer.android.com/jetpack/guide

P.S. это уже оффтоп к навигации, предлагаю на этом остановиться
источник
2020 September 21

S

Singular in Cicerone Chat (RUS)
Добрый, у кого есть туториал для работы с новым чичероне. С доками не соответсует нынешняя
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Там отличия минимальны, что именно не понятно?
источник
2020 September 29

R

Roman in Cicerone Chat (RUS)
Добрый день, использую cicerone:5.0,
у роутера нет методов для передачи аргументов,
как передать аргументы?
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Roman
Добрый день, использую cicerone:5.0,
у роутера нет методов для передачи аргументов,
как передать аргументы?
все есть в семпле. при вызове роутера вы передаете класс Screen, там и положите все аргументы
источник

Н

Никита 🙃 in Cicerone Chat (RUS)
Roman
Добрый день, использую cicerone:5.0,
у роутера нет методов для передачи аргументов,
как передать аргументы?
Тоже когда писал легаси и пересл на 5ую версию несколько негодовал.

Правильно передать в конструктор Screen и передать во фрагмент аргументами ручками. Из удобного, советую иметь с companion object'e метод newInstance(/*params*/): Fragment и внутри фрагмента константы ключей.
источник

R

Roman in Cicerone Chat (RUS)
Спасибо.
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Вчера переписал проект на Cicerone. Полет нормальный, удобно. Но есть момент, который кажется странным.
Если в SupportAppScreen переопределен метод getFragmentParams(), то getFragment() уже не вызывается.

Как при таком коде правильно передавать Сallback'и в фрагменты? Ведь если нужно передать и Bundle и Callback, то getFragment() не вызовется. Или я туплю и можно запихнуть Callback в Bundle?
Если же переопределять createFragment() в Navigator'e то это и не красиво и все равно не будет вызвано, если getFragmentParams() был переопределен.

Код выглядит примерно так:

class UserScreen(
   private val bundle: Bundle,
   private val callback: (value: Value) -> Unit,
) : SupportAppScreen() {

   override fun getFragment(): Fragment? {
       return UserScreenFragment().apply {
           
this.callback = callback
       }
   
}

   override fun getFragmentParams(): FragmentParams? {
       return FragmentParams(
           UserScreenFragment::class.javaclass.java,
           bundle,
       )
   }

}
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Получается можно не использовать getFragmentParams() и вместо его переопределения передавать и Callback и Bundle в getFragment(). Тогда наличие getFragmentParams() в SupportAppScreen выглядит странным.
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Aleksei B.
Вчера переписал проект на Cicerone. Полет нормальный, удобно. Но есть момент, который кажется странным.
Если в SupportAppScreen переопределен метод getFragmentParams(), то getFragment() уже не вызывается.

Как при таком коде правильно передавать Сallback'и в фрагменты? Ведь если нужно передать и Bundle и Callback, то getFragment() не вызовется. Или я туплю и можно запихнуть Callback в Bundle?
Если же переопределять createFragment() в Navigator'e то это и не красиво и все равно не будет вызвано, если getFragmentParams() был переопределен.

Код выглядит примерно так:

class UserScreen(
   private val bundle: Bundle,
   private val callback: (value: Value) -> Unit,
) : SupportAppScreen() {

   override fun getFragment(): Fragment? {
       return UserScreenFragment().apply {
           
this.callback = callback
       }
   
}

   override fun getFragmentParams(): FragmentParams? {
       return FragmentParams(
           UserScreenFragment::class.javaclass.java,
           bundle,
       )
   }

}
не нужно использовать оба метода
getFragmentParams - для создания фрагмента через FragmentFactory, в этом случае можно передавать колбэк в конструктор
getFragment - для создания фрагмента руками в этом методе, здесь нельзя передавать колбэк в конструктор. сериализовать колбэк тоже нельзя.
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Aleksey D.
не нужно использовать оба метода
getFragmentParams - для создания фрагмента через FragmentFactory, в этом случае можно передавать колбэк в конструктор
getFragment - для создания фрагмента руками в этом методе, здесь нельзя передавать колбэк в конструктор. сериализовать колбэк тоже нельзя.
🤔
А чем FragmentFactory в связке с Cicerone будет лучше?
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Aleksei B.
🤔
А чем FragmentFactory в связке с Cicerone будет лучше?
ничем, просто разные варианты создания фрагментов
например, есть возможность передавать зависимости через конструктор
источник

AD

Aleksey D. in Cicerone Chat (RUS)
(пожалуй, это все приятные функции такого подхода)
источник

AB

Aleksei B. in Cicerone Chat (RUS)
Aleksey D.
ничем, просто разные варианты создания фрагментов
например, есть возможность передавать зависимости через конструктор
А откуда FragmentFactory возьмет аргументы для передачи их в конструктор фрагмента, если эти аргументы были переданы в SupportAppScreen?
источник