问题标签 [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.

0 投票
5 回答
7763 浏览

android - Hilt 注入不适用于 BroadcastReceiver

使用 Hilt内部的依赖注入BroadcastReceiver不起作用。我尝试BroadcastReceiver使用警报调用 aMainActivity并且我得到了UninitializedPropertyAccessException。根据文档,它应该像将@AndroidEntryPoint注释添加到接收器一样简单,但事实并非如此。

示例代码:

应用程序.kt:

TestHiltInjection.kt:

HiltBroadcastReceiver.kt:

MainActivity.kt:

输出日志猫:

更新

问题已在 2.29.1 版本上解决,只需使用@AndroidEntryPoint

0 投票
2 回答
5857 浏览

android - 无法使用 Dagger Hilt `@WorkerInject` 注入 Android WorkManager Worker

我正在尝试遵循https://developer.android.com/training/dependency-injection/hilt-jetpack#workmanager的指南并遇到以下错误

为了重现该问题,我在Dagger Hilt Example Repo中添加了来自 gude 的示例代码

注意:AppNavigatorNavigationModule中以 @Binds abstract fun bindNavigator(impl: AppNavigatorImpl): AppNavigator.
另请注意,替换AppNavigatorAppDatabasewhich is@Singleton无济于事。

这就是我开始工作的方式MainActivity

不确定到底出了什么问题。


更新:我创建了一个全新的 Android 项目来重现它。该项目附加到 issue#158843197GitHub Gist上提供了所有关键文件源代码快照(如果您想快速查看)。


更新#2:解决方案

除了下面提到的 Ian之外,问题是我错过了 Gradle 依赖项app/build.gradle(在aosp#158843197中提到)

的依赖注入Worker现在正在工作。

0 投票
4 回答
9566 浏览

android - 提供带有 Hilt 的 Activity 实例

我怎样才能翻译这样的东西:

所以它可以在后面使用,如:

我已经从daggerto迁移了一个游乐场项目hilt,它非常顺利,但我偶然发现了这个用例。我已经更改了代码,因此我不再需要该实例,但好奇心仍然存在。

现在我们是否可能不需要这种设置:

0 投票
1 回答
2152 浏览

android - Dagger Hilt 没有在测试中注入

我正在尝试使用带有 Robolectric 的 Dagger Hilt 进行测试:

测试失败,GameActivity.onCreate因为带有 @Inject 的 GameActivity 的所有字段都为空。

游戏活动是:

这些模块是:

当我运行应用程序时它可以工作,但是当我运行测试时,GameActivity它没有被注入。所有字段@Inject为空。

有谁知道它出了什么问题?


如果有用,整个代码和测试都在这里:

  • https://github.com/lucasnlm/antimine-android/pull/95

  • https://github.com/lucasnlm/antimine-android/pull/95/commits/fcc1b3782b8d456898529dd3ba2410ac5f2da6d5

编辑

我不知道为什么,但是这个 PR 上的测试通过了:

0 投票
1 回答
2336 浏览

android - Dagger Hilt 为不同的风格/构建类型提供替代模块

我尝试将 App 迁移到Dagger Hilt。在我的旧设置中,我将模块切换为调试版本中的调试版本或不同的产品风格。例如:

然后我在 Debug 构建中交换了正确的模块:

由于 Hilt 管理ApplicationComponent我认为不可能交换模块。

但是,当我查看生成的源代码时(对我来说DaggerApp_HiltComponents_ApplicationC:),我看到 Hilt 确实为不同的模块生成了一个生成器(在 旁边未使用ApplicationContextModule)。

知道这不是最佳做法。NetworkModule为每种构建类型/产品风格提供不同的 s 会更干净。但这会导致大量重复的代码。

在测试中,我可以卸载模块并安装测试模块。但这在生产代码中似乎是不可能的。

还有其他方法可以实现我的目标吗?

0 投票
1 回答
1696 浏览

android - 如何在构造函数中传递参数(使用 Hilt 作为 DI)

这就是我的类的样子,当我注入这个类时,我需要传递名称参数。

注射班学生

@Inject lateinit var stud:Student

0 投票
1 回答
1116 浏览

dagger-hilt - 使用 Dagger Hilt 将 Fragment/Activity 绑定到 MVP View 合同

我目前正在尝试从 dagger-android 迁移到 Hilt。以前我使用@Bind 将片段和活动的实例绑定到相应的 MVP 视图合约。有没有办法对 Hilt 做同样的事情?它似乎无法注入特定的片段和活动?

0 投票
2 回答
4667 浏览

android - 未解决的参考@HiltAndroidApp 或 Android 中的任何其他 Hilt 注释

我已正确完成所有操作,但仍然无法在我的项目中使用 Hilt。

build.gradle(:app)

build.gradle(项目)

当我使用@HiltAndroidApp或任何其他 Hilt 注释时。它说未解决的参考。创建注释。我已尝试重新安装 Hilt,但仍然无法正常工作。

我也在使用Android Studio 4.0

0 投票
9 回答
13385 浏览

android - 在 Android 中使用 Hilt 后无法创建视图模型实例

这是我的AllFilesListViewModel课。

这里是PdfItemRepository上课。

对于pdfItemDao. 我创建了一个名为DatabaseModule. 下面是代码 -

AllFilesFragment.kt这是我使用 viewModel的片段类。

这是logcat文件。

0 投票
1 回答
2858 浏览

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。

感谢您的帮助