gpt4 book ai didi

android - 如何在 Dagger Hilt 中获得 MVP?

转载 作者:行者123 更新时间:2023-12-03 23:04:53 30 4
gpt4 key购买 nike

我无法使用 Model View Presenter(MVP) Hilt 方法编译代码。
我收到此错误:
/MotionPoC/app/build/generated/source/kapt/debug/com/aria/motionpoc/di/MotionApp_HiltComponents.java:145:错误:[Dagger/MissingBinding] com.aria.motionpoc.coupon.MainActivity 不能在没有@Inject 构造函数或 @Provides 注释的方法。此类型支持成员注入(inject),但不能隐式提供。
代码本身:
MainActivity.kt

@AndroidEntryPoint
class MainActivity : AppCompatActivity(), MainContract.View {

@Inject
lateinit var presenter: MainContract.Presenter
MainPresenter.kt
class MainPresenter @Inject constructor(
private val view: MainContract.View
): MainContract.Presenter {

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

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

@Binds
abstract fun bindPresenter(impl: MainPresenter): MainContract.Presenter
}
MotionApp.kt
@HiltAndroidApp
open class MotionApp : Application()
解决了!感谢您的帮助曼努埃尔体内!
https://github.com/riodext/AndroidDaggerHiltMVP

最佳答案

问题是您依赖于 Activity 的特定实现,并且代码中不满足依赖关系(即 MainActivity )。
您必须在同一模块中将其作为绑定(bind)提供:

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

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

关于android - 如何在 Dagger Hilt 中获得 MVP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63306914/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com