问题标签 [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 - Hilt 注入不适用于 BroadcastReceiver
使用 Hilt内部的依赖注入BroadcastReceiver
不起作用。我尝试BroadcastReceiver
使用警报调用 aMainActivity
并且我得到了UninitializedPropertyAccessException
。根据文档,它应该像将@AndroidEntryPoint
注释添加到接收器一样简单,但事实并非如此。
示例代码:
应用程序.kt:
TestHiltInjection.kt:
HiltBroadcastReceiver.kt:
MainActivity.kt:
输出日志猫:
更新
问题已在 2.29.1 版本上解决,只需使用@AndroidEntryPoint
android - 无法使用 Dagger Hilt `@WorkerInject` 注入 Android WorkManager Worker
我正在尝试遵循https://developer.android.com/training/dependency-injection/hilt-jetpack#workmanager的指南并遇到以下错误
为了重现该问题,我在Dagger Hilt Example Repo中添加了来自 gude 的示例代码
注意:
AppNavigator
在NavigationModule中以@Binds abstract fun bindNavigator(impl: AppNavigatorImpl): AppNavigator
.
另请注意,替换AppNavigator
为AppDatabase
which is@Singleton
无济于事。
这就是我开始工作的方式MainActivity
不确定到底出了什么问题。
更新:我创建了一个全新的 Android 项目来重现它。该项目附加到 issue#158843197。GitHub Gist上提供了所有关键文件源代码快照(如果您想快速查看)。
更新#2:解决方案
除了下面提到的 Ian之外,问题是我错过了 Gradle 依赖项app/build.gradle
(在aosp#158843197中提到)
的依赖注入Worker
现在正在工作。
android - 提供带有 Hilt 的 Activity 实例
我怎样才能翻译这样的东西:
所以它可以在后面使用,如:
我已经从dagger
to迁移了一个游乐场项目hilt
,它非常顺利,但我偶然发现了这个用例。我已经更改了代码,因此我不再需要该实例,但好奇心仍然存在。
现在我们是否可能不需要这种设置:
android - Dagger Hilt 没有在测试中注入
我正在尝试使用带有 Robolectric 的 Dagger Hilt 进行测试:
测试失败,GameActivity.onCreate
因为带有 @Inject 的 GameActivity 的所有字段都为空。
游戏活动是:
这些模块是:
当我运行应用程序时它可以工作,但是当我运行测试时,GameActivity
它没有被注入。所有字段@Inject
为空。
有谁知道它出了什么问题?
如果有用,整个代码和测试都在这里:
https://github.com/lucasnlm/antimine-android/pull/95https://github.com/lucasnlm/antimine-android/pull/95/commits/fcc1b3782b8d456898529dd3ba2410ac5f2da6d5
编辑
我不知道为什么,但是这个 PR 上的测试通过了:
android - Dagger Hilt 为不同的风格/构建类型提供替代模块
我尝试将 App 迁移到Dagger Hilt。在我的旧设置中,我将模块切换为调试版本中的调试版本或不同的产品风格。例如:
然后我在 Debug 构建中交换了正确的模块:
由于 Hilt 管理ApplicationComponent
我认为不可能交换模块。
但是,当我查看生成的源代码时(对我来说DaggerApp_HiltComponents_ApplicationC
:),我看到 Hilt 确实为不同的模块生成了一个生成器(在 旁边未使用ApplicationContextModule
)。
我知道这不是最佳做法。NetworkModule
为每种构建类型/产品风格提供不同的 s 会更干净。但这会导致大量重复的代码。
在测试中,我可以卸载模块并安装测试模块。但这在生产代码中似乎是不可能的。
还有其他方法可以实现我的目标吗?
android - 如何在构造函数中传递参数(使用 Hilt 作为 DI)
这就是我的类的样子,当我注入这个类时,我需要传递名称参数。
注射班学生
@Inject lateinit var stud:Student
dagger-hilt - 使用 Dagger Hilt 将 Fragment/Activity 绑定到 MVP View 合同
我目前正在尝试从 dagger-android 迁移到 Hilt。以前我使用@Bind 将片段和活动的实例绑定到相应的 MVP 视图合约。有没有办法对 Hilt 做同样的事情?它似乎无法注入特定的片段和活动?
android - 未解决的参考@HiltAndroidApp 或 Android 中的任何其他 Hilt 注释
我已正确完成所有操作,但仍然无法在我的项目中使用 Hilt。
build.gradle(:app)
build.gradle(项目)
当我使用@HiltAndroidApp
或任何其他 Hilt 注释时。它说未解决的参考。创建注释。我已尝试重新安装 Hilt,但仍然无法正常工作。
我也在使用Android Studio 4.0
android - 在 Android 中使用 Hilt 后无法创建视图模型实例
这是我的AllFilesListViewModel
课。
这里是PdfItemRepository
上课。
对于pdfItemDao
. 我创建了一个名为DatabaseModule
. 下面是代码 -
AllFilesFragment.kt
这是我使用 viewModel的片段类。
这是logcat
文件。
android - Android中的Hilt依赖注入仪器测试
我正在使用 Jitpack Compose 构建一个演示应用程序,并决定将 Hilt 用于 DI。运行应用程序时一切正常,我注入的依赖项没有问题,应用程序运行成功,但是,当我尝试运行 Instrumentation 测试时,我不断收到以下错误;
没有额外的信息可以帮助我找出原因。我删除了大部分 DI 相关代码以帮助我缩小问题范围,所以现在看起来像这样;
我的应用程序.kt
MainActivity.kt
本地存储库.kt
文章只是虚拟帖子的列表。
新闻存储库.kt
关于测试类;我创建了一个自定义跑步者
MyCustomTestRunner.kt
并在 defaultConfig 的 app/build.gradle 中使用它
对于测试类,无论测试做什么,它都不起作用,例如;
TodayNewsUITest.kt
我正在使用
当我从MainActivity.kt中删除以下行时,测试成功运行。
我正在使用 Android Studio 预览版 4.2。
感谢您的帮助