匕首2@提供罐头和x27;不适用于Kotlin中的静态函数?

匕首2@提供罐头和x27;不适用于Kotlin中的静态函数?,kotlin,dagger-2,Kotlin,Dagger 2,我有下面的Java代码,运行良好 @Module(subcomponents = {MainActivityComponent.class}) abstract public class ActivityBuilder { @Provides @Singleton static Context provideContext(Application application) { return application; } @Binds

我有下面的Java代码,运行良好

@Module(subcomponents = {MainActivityComponent.class})
abstract public class ActivityBuilder {

    @Provides
    @Singleton
    static Context provideContext(Application application) {
        return application;
    }

    @Binds
    @IntoMap
    @ClassKey(MainActivity.class)
    abstract AndroidInjector.Factory<?> bindMainActivity(MainActivityComponent.Builder builder);
}

我怎样才能解决这个问题?

显然,下面的方法很有效

@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {

    @Module
    companion object {
        @JvmStatic
        @Provides
        @Singleton
        fun provideContext(application: Application): Context {
            return application
        }
    }

    @Binds
    @IntoMap
    @ClassKey(MainActivity::class)
    abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>

}
@模块(子组件=[MainActivityComponent::class])
抽象类ActivityBuilder{
@模块
伴星{
@JvmStatic
@提供
@独生子女
文本(应用程序:应用程序):上下文{
退货申请
}
}
@束缚
@英托马普
@类键(MainActivity::class)
抽象趣味bindMainActivity(生成器:MainActivityComponent.builder):AndroidJector.Factory
}

显然,下面的方法很有效

@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {

    @Module
    companion object {
        @JvmStatic
        @Provides
        @Singleton
        fun provideContext(application: Application): Context {
            return application
        }
    }

    @Binds
    @IntoMap
    @ClassKey(MainActivity::class)
    abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>

}
@模块(子组件=[MainActivityComponent::class])
抽象类ActivityBuilder{
@模块
伴星{
@JvmStatic
@提供
@独生子女
文本(应用程序:应用程序):上下文{
退货申请
}
}
@束缚
@英托马普
@类键(MainActivity::class)
抽象趣味bindMainActivity(生成器:MainActivityComponent.builder):AndroidJector.Factory
}

如果伴星对象上没有@Module,那么伴星对象上就不需要@Module,同样的错误也会发生。我想你需要
@JvmStatic
,而不是
@Module
,dagger版本2.26你不需要在同伴对象上使用@Module你不需要在同伴对象上使用@Module如果同伴对象上没有@Module,同样的错误会发生。我认为您需要
@JvmStatic
,但不需要
@Module
,2.26版的dagger不需要在伴生对象上使用@Module
@Module(subcomponents = [MainActivityComponent::class])
abstract class ActivityBuilder {

    @Module
    companion object {
        @JvmStatic
        @Provides
        @Singleton
        fun provideContext(application: Application): Context {
            return application
        }
    }

    @Binds
    @IntoMap
    @ClassKey(MainActivity::class)
    abstract fun bindMainActivity(builder: MainActivityComponent.Builder): AndroidInjector.Factory<*>

}