TL; DR: Как обмениваться данными в одном потоке с использованием компонента Dagger / Hilt, но не модели общего представления?
Я пытаюсь принять подход, показанный в Android docs , который использует ручное внедрение зависимостей в Dagger-Hilt Dependency Injection, используя шаблон MVVM-Repository .
Вот поток входа моего приложения: iamge
У меня 2 фрагмента:
- UsernameFragment - он использует UserNameViewModel,
- PasswordFragment - он использует PasswordViewModel.
Я знаю, что данные между ними могут совместно использоваться:
- модель общего представления,
- родительская активность (вероятно, немного устарела).
Однако использование модели общего представления означало бы тесную связь этих 2 фрагменты. (Давайте представим, что я бы снова использовал эти 2 фрагмента, но в потоке регистрации, где были добавлены некоторые дополнительные экраны - например, PersonalInfoFragment. Поэтому я решил создать независимую модель представления для каждого из них).
Однако, если, вы читаете документы Google по ссылкам выше, вы заметите, что они используют что-то вроде объекта l oginData в их « контейнере входа в систему ». В этом случае для меня его использование ясно.
Однако, когда они объясняют тот же пример, используя Dagger2 , , они молча отбрасывают эту концепцию общих данных входа в систему через поток в «контейнере входа в систему» (в данном случае - LoginComponent).
Я был бы признателен, если кто-нибудь мне поможет, как достичь той же цели (общие данные пользователя в «контейнере входа») показаны в ManualDI, но с использованием рукояти или кинжала.
PS . Используя Android NavigationUI, я создал вложенный граф, который занимает только эти 2 фрагмента, поэтому я Гарантировано, что использование моделей представления, ограниченных графом, обеспечит мне, что каждый раз, когда пользователь входит в этот поток входа в систему, модели представления будут «чистыми» (воссозданными). Однако это не решает проблему общего ресурса в «контейнере входа в систему»
Редактировать Исправлено одно текстовое имя редактирования («Пароль») в прикрепленном изображении.