TL;DR:如何使用 Dagger/Hilt 组件而不是共享视图模型在单个流中共享数据?
我正在尝试采用Android 文档中显示的方法,该方法使用手动依赖注入到 Dagger-Hilt 依赖注入,使用MVVM-Repository 模式。
这是我的应用程序的登录流程:iamge
我有2个片段:
- UsernameFragment - 它使用 UserNameViewModel,
- PasswordFragment - 它使用 PasswordViewModel。
我知道他们之间的数据可以通过以下方式共享:
- 共享视图模型,
- 父活动(可能有点过时了)。
然而,使用共享视图模型意味着紧密耦合这两个片段。(假设我将再次使用这两个片段,但在注册流程中,添加了一些额外的屏幕 - 例如 PersonalInfoFragment。所以我决定为每个片段设置独立的视图模型)。
但是,如果您阅读上面链接的 Google 文档,您会注意到他们在“登录容器”中使用了类似 l oginData 的对象。在那种情况下,它的用途对我来说很清楚。
但是,当他们使用 Dagger2 解释相同的示例时,他们默默地将共享 loginData 的概念丢弃在“登录容器”(在这种情况下为 LoginComponent)中的流中。
如果有人帮助我,我将不胜感激,如何实现 ManualDI 中显示的相同目标(“登录容器”中的共享 userData),但使用 Hilt 或 Dagger。
PS .Using Android NavigationUI 我创建了一个嵌套图 - 它只需要 2 个片段,因此我确信,使用图范围内的视图模型将确保我每次用户进入此登录流程时,视图模型都是“干净的” (重新创建)。但是它并没有解决“登录容器”中的共享资源问题
编辑修正了附件图片中的一个编辑文本名称(“密码”)。