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

匕首应用程序组件未解析引用

司空高义
2023-03-14

我正在尝试通过修改MVP应用程序Belajar应用程序在MVVM架构中应用DaggerApplicationComponent,但是我刚刚收到未解决的引用:DaggerApplicationComponent的错误。Kotlin kapt 已被应用,我尝试重建项目,但我从应用程序组件收到错误:C:\Users\3\AndroidStudioProjects\belajar3 - Copy (3)\app\build\tmp\kapt3\stubs\debug\id\kotlin\belajar\di\component\ApplicationComponent.java:8:错误:[Dagger/MissingBinding] retrofit2。如果没有@Inject构造函数或@Provides注释的方法,则无法提供改造。公共抽象接口 ApplicationComponent 扩展了 dagger.android.AndroidInjector

我需要这个问题的建议。谢谢。

这是代码:

应用程序组件:

import dagger.Component
import dagger.android.AndroidInjector
import dagger.android.support.AndroidSupportInjectionModule
import id.kotlin.belajar.BelajarApp
import id.kotlin.belajar.di.builder.ActivityBuilder
import id.kotlin.belajar.di.module.Networkmodule
import javax.inject.Singleton

@Singleton
@Component(modules = [
    AndroidSupportInjectionModule::class, Networkmodule::class,
    ActivityBuilder::class
])
interface ApplicationComponent : AndroidInjector<BelajarApp>

贝拉哈尔应用:

import dagger.android.AndroidInjection.inject
import dagger.android.AndroidInjector
import dagger.android.DaggerApplication
import id.kotlin.belajar.di.component.DaggerApplicationComponent


class BelajarApp : DaggerApplication(){
    override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
        return DaggerApplicationComponent.create().apply { inject(this@BelajarApp) }
    }
}

我的github存储库:

https://github.com/muhammadwibisonojanuar/Coding-2.git

共有2个答案

南宫喜
2023-03-14

由于我真的不知道如何使用Kotlin,只能遵循它,我想我需要你的意见。

燕元明
2023-03-14

问题是在您的家庭模块中,您需要一个改造依赖项。

        @JvmStatic
        @Provides
        fun providesHomeDatasource(retrofit: Retrofit): HomeDatasource=
            retrofit.create(HomeDatasource::class.java)

但没有像这样的方法:

    @Provides
    fun provideRetrofit() : Retrofit {
       //Return Retrofit here
    }

创建上述方法,它将全部工作。

正如您在 NetworkModule 中看到的那样,您只提供了一个构建器,但实际上并没有构建它:

    @Provides
    @Singleton
    fun providesHttpAdapter(client: OkHttpClient): Retrofit.Builder {
        return Retrofit.Builder().apply {
            client(client)
            baseUrl(BuildConfig.BASE_URL)
            addConverterFactory(GsonConverterFactory.create())
            addCallAdapterFactory(RxJava3CallAdapterFactory.createAsync())
        }
    }
 类似资料:
  • 基于本教程使用Dagger Hilt添加子组件需要 这就是如何创建子组件 我的问题是如何实现 因为它没有显示它是如何提供给UserManager类的 我正在尝试创建一个AppComponent来测试子组件如何与Dagger Hilt一起工作 并在应用中 我应该如何在中创建构建器,创建实现Provider的匿名类不正确吗?

  • 这很好,但是如果我使用全局组件甚至子组件中的一个模块,那么应该传入上下文。因此,这意味着如果我用匕首注入演示器,它将被绑定到ApplicationContext。这使得作为JUnit进行测试变得困难。Android代码不应该在演示器中。 所以我想问的是,最好的做法是只在活动、片段、广播接收器和服务中使用匕首吗?就mvp架构而言,这就是。另一个解决方案是设计另一个dagger组件,但不是与appco

  • 我对匕首2还不太熟悉。我正试图在我的Android项目中实现它。我有一个需要。我用匕首把它注射到这个服务中。 、和具有标记为的方法当我构建项目时,我收到以下错误: locationServiceComponent依赖于多个作用域组件:@Singleton NetComponent@Singleton RepositoryComponent 我知道我的不能依赖于两个作用域组件,但我的服务中需要这两个

  • 预期:测试Dagger使用空构造函数创建了存储库类 问题:使用和创建存储库类时使用Dagger依赖注入来创建Mockk验证正在中断。 使用Dagger的Android构造函数模式实现存储库时,需要一个带有的空以便Dagger应用程序组件AppComponent.kt知道创建类。 当被注释掉时,测试通过。在实现时,将调用和跟踪来自先前测试的方法,从而导致验证失败。 在单元测试中,用于模拟SomeRe

  • 我在应用程序中有多个匕首瞄准镜 UserScope-范围表示用户会话 ActivityScope-每个活动的范围 UserComponent-CoreComponent的子组件 UserManager-创建UserComponent的单例程序 HomeComponent-依赖于UserComponent的组件 我试图在下更新用户对象,但不知何故,对象更新没有反映在它的依赖组件上。因此,一旦更新屏幕

  • 我正在尝试为我的navControl ler提供匕首柄。但是我使用的方法不起作用。我想提供navControl ler以便通过构造函数注入将其注入我的片段中。 我还创建了FragmentWorks类,以便通过构造函数注入我的依赖项。我知道是这里的问题,但我不知道正确的解决方案… 感谢您的帮助,谢谢! 原因:java.lang.ClassCastException:com.example.app。应