问题标签 [dagger-hilt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android 像 Java 一样实现工厂设计模式
如何使用 java 示例代码使用 Android 和 Hilt/Dagger 的工厂方法。这种设计模式在 Android Hilt/Dagger 中是否可行以及如何实现。我在网上找不到好的解决方案
谢谢约翰
android - 从 Fragment 调用 Hilt-Dagger ViewModel
我正在使用ViewModel
更新操作栏中的标题
共享视图模型
MainActivity 观察者
使用下面的代码似乎在Fragment
(在调试器中检查)创建了一个新实例:
但似乎以这种方式工作
这应该以这种方式完成还是我做错了什么?
谢谢!
android - Hilt using in android library
I would like to try Hilt DI in the android library.
It is a dependency on another project, with its own submodule. The very first problem I've encountered is the requirement of marking Application
with @HiltAndroidApp
. Now I do not have anything that extends Application
in my library ofc but would like to utilize Hilt and its predefined components.
Is it possible or should I go with Dagger only in such a case? I've found a solution for Dagger, where library dependency injection is made totally independently (the client is unaware of the library's DI): Dagger solution, would love to hear any opinion on that, maybe someone already put a great effort into that issue and can share his insights.
android - Hilt:通过 viewModels():RuntimeException:无法创建类 ProductsListViewModel 的实例
所有build.gradle
文件都有:
Root 的 build.gradle:
应用程序的 build.gradle:
我的应用程序:
api模块:
ProductsListViewModel:
基础视图模型:
产品列表片段:
产品API:
应用模块:
存储库模块:
ProductsRepositoryImpl:
ProductsRemoteDataSource:
主要活动:
错误:
android - DaggerApp_HiltComponents_ApplicationC.java 编译时错误 - 找不到符号
我正在尝试将 Hilt 集成到我的项目中,但我无法通过初始配置。到目前为止,我按照官方文档一步一步添加了插件和依赖项。一旦我用 标记Application
类@HiltAndroidApp
,构建就会失败并出现以下错误:
我检查了生成的文件,发现了一些麻烦的方法:
我对 Dagger 和 Hilt 还很陌生,所以我不知道这可能来自哪里。我认为这可能是一个依赖问题,但我没有得到任何运气。我在项目中导入了一些外部模块,这是我的 gradle:
项目/build.gradle
应用程序/build.gradle
依赖项.gradle
我希望有人至少能指出我正确的方向,现在我盲目地试图猜测问题出在哪里。谢谢。
android - 如何防止 Hilt 从库中选择依赖项?
好吧,让我们把这个简单化。
我创建了一个简单的库my-network-library
,其中包含两个类。第一个是名为 Hilt 的模块BaseNetworkModule
第二个是一个简单的类。
现在我想MyAwesomeClass
在我的一个应用程序中使用。所以我在应用程序中添加了依赖项。
我也有一些网络调用实现,我不想使用OkHttpClient
from my-network-library
。所以我在应用程序中创建了一个模块来获取我自己的OkHttpClient
.
现在正在低于错误。
错误:[Dagger/DuplicateBindings] okhttp3.OkHttpClient 被绑定多次:
我知道这是因为在 中@Provides
声明my-network-library
,但我没有指定includes
注释@Module
从BaseNetworkModule
. 可以使用@Qualifier
注释解决该问题,但 IMO,这将是一种解决方法。
所以我的问题是
includes
为什么库模块的依赖项会在不使用of 的情况下进入应用程序模块@Module
?- 如何告诉 Hilt “不要在外部库中寻找 @Provides(gradle 依赖项)?” 除非我用
@Module(includes = XXXModule)
android - 使用 Android Dagger Hilt 在单个流中跨片段共享数据
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 个片段,因此我确信,使用图范围内的视图模型将确保我每次用户进入此登录流程时,视图模型都是“干净的” (重新创建)。但是它并没有解决“登录容器”中的共享资源问题
编辑修正了附件图片中的一个编辑文本名称(“密码”)。
android - 如何在 Dagger Hilt 中获得 MVP?
我无法使用 Model View Presenter(MVP) Hilt 方法编译代码。
我收到此错误: /MotionPoC/app/build/generated/source/kapt/debug/com/aria/motionpoc/di/MotionApp_HiltComponents.java:145:错误:[Dagger/MissingBinding] com.aria.motionpoc.coupon.MainActivity如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供。此类型支持成员注入,但不能隐式提供。
代码本身:
MainActivity.kt
MainPresenter.kt
主模块.kt
运动应用程序.kt
解决了!感谢您的帮助曼努埃尔体内! https://github.com/riodext/AndroidDaggerHiltMVP