Dagger2:如果没有 @Provides 注释的方法,则无法提供 ViewModel

2023-11-26

我正在遵循使用的架构Github浏览器示例由谷歌。但在建设项目的过程中却遇到了麻烦。

我已经将项目迁移到AndroidX。我已经尝试了 StackOverflow 上的许多答案,但都没有成功。 这是我在构建时遇到的构建异常:

e:/windows/Apps/Verifi/VerifiApp/app/build/tmp/kapt3/stubs/debug/com/verifi/di/component/AppComponent.java:11: error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends androidx.lifecycle.ViewModel>,javax.inject.Provider<androidx.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method.
public abstract interface AppComponent extends dagger.android.AndroidInjector<com.verifi.VerifiApp> {
                ^
      java.util.Map<java.lang.Class<? extends androidx.lifecycle.ViewModel>,javax.inject.Provider<androidx.lifecycle.ViewModel>> is injected at
          com.verifi.viewmodel.AppViewModelFactory.<init>(creators)
      com.verifi.viewmodel.AppViewModelFactory is injected at
          com.verifi.ui.auth.AuthActivity.appViewModelFactory
      com.verifi.ui.auth.AuthActivity is injected at
          dagger.android.AndroidInjector.inject(T)
  component path: com.verifi.di.component.AppComponent → com.verifi.di.module.ActivityBindingModule_AuthActivity.AuthActivitySubcomponent

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.

VerifiApp.kt

class VerifiApp: Application(), HasActivityInjector {

    @Inject
    lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>

    override fun onCreate() {
        super.onCreate()

        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }

        AppInjector.init(this)
    }

    override fun activityInjector() = dispatchingAndroidInjector
}

应用程序组件.kt:

@Singleton
@Component(
    modules = [AndroidSupportInjectionModule::class,
        AppModule::class,
        ActivityBindingModule::class])
interface AppComponent: AndroidInjector<VerifiApp> {
    @Component.Builder
    interface Builder {

        @BindsInstance
        fun application(application: Application): Builder

        fun build(): AppComponent
    }

    override fun inject(verifiApp: VerifiApp)
}

应用程序模块.kt:

@Module(includes = [ViewModelBindingModule::class])
class AppModule {

    @Provides
    @Singleton
    internal fun provideContext(application: Application): Context = application

    @Provides
    @Singleton
    internal fun getRemoteSource(remoteDataManager: RemoteDataManager): IRemoteSource = remoteDataManager

    @Provides
    @Singleton
    internal fun provideDataManger(appDataManager: AppDataManager): IAppDataSource = appDataManager

    @Singleton
    @Provides
    fun provideVerifiService(): VerifiService {
        return Retrofit.Builder()
            .baseUrl("https://api.github.com/")
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(LiveDataCallAdapterFactory())
            .build()
            .create(VerifiService::class.java)
    }
}

视图模型绑定模块::

@Suppress("unused")
@Module(includes = [AuthViewModelsBindingModule::class])
abstract class ViewModelBindingModule {

    @Binds
    abstract fun bindViewModelFactory(factory: AppViewModelFactory): ViewModelProvider.Factory

    @Binds
    @IntoMap
    @ViewModelKey(AuthViewModel::class)
    abstract fun bindAuthViewModel(authViewModel: AuthViewModel): AuthViewModel
}

任何帮助将非常感激。


abstract fun bindAuthViewModel(authViewModel: AuthViewModel): AuthViewModel

应该返回一个ViewModel not AuthViewModel

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dagger2:如果没有 @Provides 注释的方法,则无法提供 ViewModel 的相关文章

  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • 在 Android Studio 中,为什么我必须在模拟器中单击“运行应用程序”两次才能启动应用程序?

    在 Android Studio 中 当我按播放按钮在 Android 模拟器上安装并运行应用程序时 大约 5 10 秒后 我在屏幕底部收到一条消息 显示 安装成功 但应用程序实际上并未运行在模拟器上 我必须再次按下播放按钮 这是非常令人沮
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • 修改列表时,Jetpack composecollectAsState() 未收集热流

    当我使用collectAsState the collect 仅当传递新列表时触发 而不是在修改和发出列表时触发 查看模型 HiltViewModel class MyViewModel Inject constructor ViewMod
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 科特林;按多个字段分组

    如何在代码中按三个或更多字段进行 groupBy 我的代码如下 val nozzleSaleReport nozzleStateList groupBy it shift id it createUser id it nozzle id H
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • android sdk 的位置尚未在 Windows 操作系统的首选项中设置

    在 Eclipse 上 我转到 windows gt Android SDK 和 AVD Manager 然后弹出此消息 Android sdk 的位置尚未在首选项中设置 进入首选项 在侧边栏找到 Android 然后会出现一个 SDK 位
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 在 Python 中将日期从 mm/dd/yyyy 转换为另一种格式

    我正在尝试编写一个程序 要求用户以 mm dd yyyy 格式输入日期并进行转换 因此 如果用户输入 01 01 2009 程序应显示 2009 年 1 月 1 日 这是到目前为止我的程序 我成功地转换了月份 但其他元素周围有一个括号 因此
  • 如何检查 AWS Cognito 中是否已存在电子邮件?

    我正在使用 AWS Cognito 进行登录 注册 我们还有两步之遥 1 它会要求提供电子邮件 2 如果电子邮件已经存在 那么它会询问密码 否则它会说创建密码 此步骤上的按钮根据上述条件显示 无论是 登录 还是 注册 在用户输入电子邮件后
  • 沿坐标列表给出的路径向量化半正矢距离计算

    我有一个坐标列表 可以使用以下方法计算所有点之间的距离矩阵半正矢距离公制 坐标为numpy array形状的 n 2 of latitude longitude pairs 16 34576887 107 90942116 12 49474
  • 从 CreateAnonymousThread 更新 VCL 组件

    看来哪一个同步不能从使用创建的线程中使用创建匿名话题 所以问题是 How i can update a VCL component from inside of a Thread created using CreateAnonymousT
  • 非导出活动:在模拟器上启动;手机上的安全异常

    我有一个非出口活动在我的项目中 如果我尝试使用以下命令在手机上启动它adb adb shell am start n packagename activityname 我收到错误 java lang SecurityException Pe
  • 使用 PDO 准备好插入后获取最后一个插入 ID

    我在一个新项目中使用 PHP PDO 和 PostgreSQL 给定以下函数 如何返回刚刚插入的行的 id 它并不像现在看起来的那样工作 function adauga administrator detalii global db ult
  • PHP 中的语音识别?

    我正在寻找 PHP 中的语音识别 我有很多 wav 文件 10 15 秒 我希望语音识别能够识别每个 wav 文件中的 1 或 2 个单词 然后将其标记到数据库或 csv 所有文件都有相同的声音和口音 同一个人哈哈 伪代码示例 voice
  • Mono.Cecil:从其他程序集调用GENERIC基类的方法

    我正在跟进我之前的问题 Mono Cecil 从其他程序集中调用基类的方法 我正在做同样的事情 但如果我的基类是通用的 它就不起作用 in Assembly A class BaseVM
  • 从 Android 中的本地资源加载 jQuery 以用于远程 html 页面

    我正在尝试从 Android webview 读取存储在资产中的本地 javascript 文件 jQuery 我不想加载 with base url 因为我的图像和 html 是远程提供的 总结一下 将本地 jQuery 在资产文件夹中
  • AttributeError:未知属性 color_cycle

    我正在学习 pandas 并尝试绘制id列 但我收到错误AttributeError Unknown property color cycle和空图 该图仅出现在交互式 shell 中 当我作为脚本执行时 我得到相同的错误 除了图表没有出现
  • 使用 MSAL 的访问令牌/刷新令牌

    我对 OAuth2 以及 AccessToken 和 RefreshToken 的概念比较熟悉 使用 ClientApplicationBase AcquireTokenSilentAsync 时 MSAL 似乎正在为我们做一些工作 我不清
  • MVVM Light Messenger 多次执行

    我正在使用 MVVM Light 并使用消息在 ViewModel 之间进行通信 让 ViewModel 知道何时可以执行某些操作 我的问题是我注册了一条消息 然后它多次收到它 因此 为了防止我的程序多次执行某些操作 我必须创建布尔标志来查
  • 使用由明确定义的归纳定义的递归函数进行计算

    当我使用Function在 Coq 中定义一个非结构递归函数 当要求进行特定计算时 生成的对象会表现得很奇怪 事实上 不是直接给出结果 而是Eval compute in 指令返回一个相当长 通常为 170 000 行 的表达式 Coq 似
  • 打开带有空格的本地 Android 文件

    我正在尝试使用意图在 Android 4 0 中打开本地文件 以下是执行该操作的代码 只要文件没有特殊空格 例如 如果文件是 data data com xxxx yyyy files Downloads Documents Product
  • 什么是 kthreadd_task

    在kthread create的定义中 有一个任务被唤醒 有谁知道这个任务在做什么吗 struct task struct kthread create struct kthread create info create create th
  • java部分类

    小序言 我是 1 4 jdk 的优秀 java 开发人员 之后我切换到了另一个平台 但在这里我遇到了问题 所以问题是关于jdk 1 6 或更高版本 我有3个耦合类 耦合的本质与本机方法有关 波纹管是这 3 类的示例 public inter
  • 如何删除未使用的序列?

    我们正在使用 PostgreSQL 我的要求是从我的数据库中删除未使用的序列 例如 如果我通过应用程序创建任何表 则会创建一个序列 但为了删除该表 我们也不会删除该序列 如果想要创建相同的表 则正在创建另一个序列 示例 表 file 自动创
  • 我可以用 d3 附加文字 SVG 元素吗?

    我想用 d3 附加一个文字 SVG 元素 所以而不是写 svg selectAll circle data data enter append circle etc etc 我想做 svg selectAll circle data dat
  • iPhone 中收到警告:NSString 可能不会响应“-JSONValue”

    在我的 iPhone 应用程序中 我正在访问网络服务器以获取数据 这里我使用 JSON 从数据库中检索数据 我收到一条警告 NSString 可能不会响应 JSONValue 如何解决呢 添加这个 import JSON h 在你的顶部 m
  • Dagger2:如果没有 @Provides 注释的方法,则无法提供 ViewModel

    我正在遵循使用的架构Github浏览器示例由谷歌 但在建设项目的过程中却遇到了麻烦 我已经将项目迁移到AndroidX 我已经尝试了 StackOverflow 上的许多答案 但都没有成功 这是我在构建时遇到的构建异常 e windows