我无法使用 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/