Android 如何获得匕首剑柄的MVP?

Android 如何获得匕首剑柄的MVP?,android,dagger,dagger-hilt,Android,Dagger,Dagger Hilt,我无法使用模型视图演示器(MVP)Hilt方法编译代码 我得到这个错误: /MotionPoC/app/build/generated/source/kapt/debug/com/aria/MotionPoC/di/MotionApp_HiltComponents.java:145:错误:[匕首/缺失绑定]com.aria.MotionPoC.优惠券.main如果没有@Inject构造函数或@Provides注释方法,则无法提供活动。此类型支持成员注入,但不能隐式提供 守则本身: MainAct

我无法使用模型视图演示器(MVP)Hilt方法编译代码

我得到这个错误: /MotionPoC/app/build/generated/source/kapt/debug/com/aria/MotionPoC/di/MotionApp_HiltComponents.java:145:错误:[匕首/缺失绑定]com.aria.MotionPoC.优惠券.main如果没有@Inject构造函数或@Provides注释方法,则无法提供活动。此类型支持成员注入,但不能隐式提供

守则本身:

MainActivity.kt

main演示者.kt

main模块.kt

MotionApp.kt

解决了!感谢您的帮助曼纽尔维梧
问题在于您依赖于活动的特定实现,而代码中不满足依赖性(即
MainActivity

您必须在同一模块中作为绑定提供:

@InstallIn(ActivityComponent::class)
@Module
object MainActivityModule {

    @Provides
    fun bindActivity(activity: Activity): MainActivity {
        return activity as MainActivity
    }
}

您的MainActivity上缺少@AndroIdentityPoint,并且您有一个无法编译的循环依赖项。活动需要一个演示者,演示者需要活动初始化我已经有了@AndroIdentityPoint(我忘了放在这里)。关于Cicle依赖性,您将如何实现MVP?谢谢你的回答!我的意思是,如何从演示者中的视图调用方法?保持“活动”和“演示者”彼此解耦。我将在onCreate上的“演示者”中设置视图,并在onDestroy中将其设置为null。类似override onCreate(blabla){super.onCreate(blala)presenter.setView(this)}我希望通过构造函数而不是手动进行注入。解答:谢谢回答!我尝试了此操作,但在bindActivity:/di/MainModule中出现了此错误。java:21:error:@Binds-methods”参数类型必须可分配给返回类型是因为您的活动属于其他类型吗?请尝试AppCompatitActivity我在中上载了项目:已解决!如果有人想看到解决方案是在上面的链接工作得很好!非常感谢。
class MainPresenter @Inject constructor(
    private val view: MainContract.View
): MainContract.Presenter {

    override fun onViewCreated() {
        view.showList()
    }
}
@InstallIn(ActivityComponent::class)
@Module
abstract class MainModule {

    @Binds
    abstract fun bindActivity(view: MainActivity): MainContract.View

    @Binds
    abstract fun bindPresenter(impl: MainPresenter): MainContract.Presenter
}
@HiltAndroidApp
open class MotionApp : Application()
@InstallIn(ActivityComponent::class)
@Module
object MainActivityModule {

    @Provides
    fun bindActivity(activity: Activity): MainActivity {
        return activity as MainActivity
    }
}