Size: a a a

Cicerone Chat (RUS)

2021 February 22

ВБ

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

ВБ

Влад Баженов... in Cicerone Chat (RUS)
кажется, что мы вообще не о навигации гвоорим
источник

AD

Aleksey D. in Cicerone Chat (RUS)
так вот конструктор и помогает такому DI стать нормальным
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Влад Баженов
кажется, что мы вообще не о навигации гвоорим
ну как не навигация? был вопрос о нужности поддержки FragmentFactory в библиотеке
я рассказал сценарии, в которых я ее использую, автор ушел думать, насколько это полезно
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
Правильно я понял, это все вместе того, чтобы не брать парента и не кастовать его к интерфейсу. Для этого парент живет в даггере и передается через конструктор фрагмента.
Кейс ок, я просто давно не использовал парентов
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Konstantin Tskhovrebov
Правильно я понял, это все вместе того, чтобы не брать парента и не кастовать его к интерфейсу. Для этого парент живет в даггере и передается через конструктор фрагмента.
Кейс ок, я просто давно не использовал парентов
хм, парент в даггере - интересно, это Dagger-Android по сути и тоже вынуждает дочерний компонент знать, кто есть родитель 🤔
но… этот компонент тоже надо откуда-то получить
и конструктор самый подходящий вариант
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
если я правильно понял, то подойдет решение передавать фрагмент менеджер, чтобы можно было так:
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
правильно?
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Konstantin Tskhovrebov
если я правильно понял, то подойдет решение передавать фрагмент менеджер, чтобы можно было так:
а чем вариант с FragmentParams плох?
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
зачем FragmentParams?
для аргументов экрана все итак есть
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Konstantin Tskhovrebov
зачем FragmentParams?
для аргументов экрана все итак есть
чтобы в каждом экране не дергать фабрику
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
зачем ее дергать в каждом экране?
источник

AD

Aleksey D. in Cicerone Chat (RUS)
Konstantin Tskhovrebov
зачем ее дергать в каждом экране?
вот здесь каждый экран подразумевает лямбду с менеджеров в кач-ве параметра
я правильно понимаю, что какой-то хитрый разработчик может там начать транзакцию крутить-вертеть?
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
постойте, транзакцию и без этого где угодно можно "крутить-вертеть"
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
давайте разберемся какую задачу вы хотите решить с FragmentParams?
источник

AD

Aleksey D. in Cicerone Chat (RUS)
удобная интеграция с FragmentFactory
источник

KT

Konstantin Tskhovreb... in Cicerone Chat (RUS)
FragmentFactory сама по себе - костыль, чтобы не только дефолтный конструктор дергать, но аргументы как и раньше надо через бандл передавать.

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

AD

Aleksey D. in Cicerone Chat (RUS)
так удобно же получается:

transaction
.replace(id, params.cls, params.args, params.tag)
.commit()
источник

AD

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

AD

Aleksey D. in Cicerone Chat (RUS)
да, этот вариант плохо работает с Activity, но для Fragment он универсален и позволяет не пискать в каждом экране FeatureFragment().arguments = Bundle().put(String, Any)
источник