问题标签 [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 投票
1 回答
1851 浏览

android - 将视图模型注入仪器测试

我一直在寻找如何将 ViewModel 注入测试以便进行测试。假设 viewmodel 有一个带有一些业务逻辑交互器的构造函数注入。我可以很容易地将它注入到片段中,但在测试中没有成功。

我试图在测试类中实现 byViewModels() 并且可以在没有构造函数参数的情况下注入 viewmodel 但没有成功。

原因:我希望能够完全测试我的屏幕逻辑,因为 viewModel 将处理对交互器等的依赖关系。随着各种数据的流动,背后可能有很多逻辑。测试片段很可能是可能的,但在具有大量测试的大型项目中速度较慢。

我已经阅读了https://developer.android.com/jetpack/guide#test-components,它建议在 viewModel 中进行 JUnit 测试和模拟依赖项,但是您必须分别为每个依赖项创建测试并且不能真正测试整个屏幕的逻辑

0 投票
0 回答
127 浏览

android - @ActivityRetained 类的协程范围?

如果我的应用程序中有一个带有注释的类,@ActivityRetained那么能够访问将被适当取消的协程范围是有意义的。这将类似于viewModelScopein a ViewModel

这是可以完成的事情还是仍然需要实施的事情?

0 投票
7 回答
1896 浏览

android - DAO 注入问题 - 在 Hilt Android 中找不到 RoomDatabase

所以我正在尝试在个人项目中使用 Room。我已经实现了我的实体、dao 和我的 roomdatabase 扩展应用程序类:

但是,我也在尝试使用 Hilt DI,所以,我创建了一个这样的模块:

一切对我来说似乎都很好。但是,当我尝试编译时,我收到了以下错误消息:

找不到 androidx.room.RoomDatabase 的类文件

知道我错过了什么吗?

如果它可以帮助你,我试图改变我的 build.gradle :

实现“androidx.room:room-runtime:2.3.0-alpha02”

对此:

api“androidx.room:room-runtime:2.3.0-alpha02”

就这样,它编译成功,但我认为这不是一个好习惯,查看我找到的教程。

如果您需要有关我的代码的更多详细信息,请不要犹豫。

谢谢您的回答 :)

编辑 :

我的房间 build.gradle :

有了这个也:

编辑 2:

我想我找到了问题的原因。我在这样的类中调用了我的 DAO 方法:

如果我评论“private val userDao:UserDao”行,似乎问题出在userDao注入原因,我不再有错误了。所以我认为我的问题来自于我注入 dao 对象的方式。

0 投票
2 回答
3014 浏览

android - 使用 HILT 对 ViewModel 的应用程序依赖

我想知道如何使用 Hilt 将应用程序依赖项传递给 ViewModel?我正在尝试使用 AndroidViewModel,但我做不到。有人能帮我吗?一些简短的样本对我来说意义重大。

这是我的视图模型:

这是我的刀柄模块

其他一切都很好,我收到了错误消息:

引起:java.lang.RuntimeException:无法创建类 com.example.example.viewmodel.MainViewModel 的实例 引起:java.lang.InstantiationException:java.lang.Class<com.example.example.viewmodel.MainViewModel> 有没有零参数构造函数

0 投票
1 回答
1019 浏览

android - 从 Hilt 中的另一个 Gradle 模块注入实现

我正在尝试使用 hilt 来注入存储库类的实现(接口存在于domain模块中,模块中的实现datadata模块取决于domain一个)但在构建应用程序时收到错误。这是我的设置

domain模块中

data模块中

和 data 将域声明为依赖项

编辑:我收到的错误:

0 投票
1 回答
421 浏览

android - Android:切换片段后按钮onClicklistener不起作用

我有一个非常奇怪的问题。当我从使用 a导航Fragment 1到使用后退按钮然后从导航返回到使用后退按钮时,in不再起作用,因此无法再次导航到。Fragment 2btn.setOnClickListenerFragment 2Fragment 1btn.setOnClickListenerFragment 1Fragment 2

这是我的代码:

按钮 XML

主要 XML

用于数据绑定的 BaseFragment

用于初始化按钮的 EmailFragment

片段 1

片段 2

我试图删除对问题不重要的所有内容。您可以忽略BaseFragmentEmailFragmentCalibrateRepairMessageFragment的构造函数CalibrateRepairUserDataFragment。我正在使用导航组件和匕首。

我感谢每一个帮助,谢谢。

PS:我注意到button:onClick在 .xml 文件中使用可以解决这个问题,但在这种情况下我不能使用 xml 版本。

0 投票
2 回答
4944 浏览

android - 将 sharedPreference 对象包装在 hilt 中的最佳方法

我有一个 sharedPreference 对象,我想通过项目将其作为依赖注入组件。

0 投票
1 回答
1976 浏览

java - 注入通用 ViewModel Dagger Hilt Android

嗨,我想在我的 BaseActivity 中注入通用 ViewModel 类型,如何使用 Dagger Hilt 解决这个问题。

0 投票
1 回答
149 浏览

android - Hilt 在 API 级别 18 上崩溃

在应用程序中使用 hilt 并在 Jelly Bean 设备上发生以下崩溃。

这是我在 gradle 中使用的所有依赖项。

0 投票
2 回答
654 浏览

android - 使用 Workmanager 进行 Hilt Instrumentation 测试不工作

当我尝试在包含 WorkManager 的应用程序中运行 ActivityScenario 时,我在启动时收到以下错误:

使用WorkManagerTestInitHelper来自work-test工件的 也无济于事。

WorkManager 的定义如下:

这是我的测试自动取款机: