当前位置: 首页 > 知识库问答 >
问题:

为什么我不注入ViewModel我使用Hilt的kotlin

黎奇思
2023-03-14
@HiltViewModel
class PrincipalViewModel @Inject constructor(private val repository: PrincipalRepository) :ViewModel()

这是我的束缚

@Module
@InstallIn(ViewModelComponent::class)
abstract class ActivityModule {
    @Binds
    abstract fun bindPrincipalRepoImpl(repoImpl : PrincipalRepositoryImpl) : PrincipalRepository
}

错误在于

/Users/X/AndroidStudioProjects/Corotuines/app/build/generated/source/kapt/debug/com/example/corotuines/application/ApplicationMain_HiltComponents.java:126:错误:[Dagger/Mis的绑定]com.example.corotuines.repository.没有@Inject构造函数或@提供注释的方法不

共有1个答案

卢磊
2023-03-14

如果PrincipalRepository是一个接口,您的代码将会工作。否则,您应该使用:

 @Module
 @InstallIn(ViewModelComponent::class)
 object XYZModule {

 // with Potential dependencies if exists
 @Provides
 fun providePrincipalRepo(dep1:DEP1,dep2:DEP2): PrincipalRepository {
  return  PrincipalRepositoryImpl(dep1,dep2);
 }
}

祝你好运。

 类似资料:
  • 在Spring中,我可以使用@值注入配置各种对象,如int、boolean、String等。我甚至可以用一个@值注入配置整个映射结构。 假设我们有以下TCP服务器规范类: 我可以按名称插入多个服务器规范的映射,执行。。。 。。。使用以下YAML配置(application-test1.yml): 但通常需要介于两者之间:只注入一个TcpServerSpec: 然后我可以成功通过以下测试: 为什么这

  • 问题内容: 我有 一切都正确加载。 然后在我的JavaScript中,我尝试注入ngCookies: 但是它似乎找不到$ cookies: 问题答案: 我不确定您的功能用例是什么,但是您不能在配置块中注入服务(即服务)。仅常量和提供程序可以注入配置块内。 您可以将服务注入运行块,但我不知道这是否对您有帮助,因为我不确定您打算如何处理这些cookie。 顺便说一句:您似乎在混合主角度文件和模块的版本

  • 我在这个论坛上读到了很多关于尝试Autowire pojo时发生的类似问题的文章,通常修复的答案与或/有关。但是,在我的例子中,我设法autowire我的pojo(Mas60010),但我不能autowire或以及可能来自我没有编写代码的包的任何其他对象。 为了简单起见,我只提到。我做错了什么?我想问题要么出在库上,要么出在配置上。注意:请不要仅仅通过显示一个与他自己的POJO相关的问题来指出这个

  • 如何在扩展Activity而不是AppCompatActivity的类中注入改装实例?这是模块: 这是我的主要活动: 这导致 用@AndroidEntryPoint注释的活动必须是 androidx.activity.ComponentActivity 的子类。(例如 FragmentActivity、AppCompatActivity 等)[剑柄]处理未完成。有关详细信息,请参阅上面的错误。 我

  • 我只是从喷气背包和剑柄开始。但是当我注入到ViewModel中时,我遇到了一些问题。 我得到的错误: 我可以在活动中注入所有细节,但不能在ViewModel中注入。我已经尝试了所有我能找到的解决办法。 我的gradle文件: 项目根级别: 模块级: 我的申请文件 我的模块文件: 项目是具有可组合屏幕的单个活动,因此主要活动: 视图模型: 我尝试过的事情: 改为ViewModelComponent而