Android 如何获得匕首剑柄的MVP?
我无法使用模型视图演示器(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 解决了!感谢您的帮助曼纽尔维梧强>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
问题在于您依赖于活动的特定实现,而代码中不满足依赖性(即
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
}
}