如何在Dagger Hilt中获得MVP? [英] How to MVP in Dagger Hilt?

查看:316
本文介绍了如何在Dagger Hilt中获得MVP?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使用Model View Presenter(MVP)Hilt方法编译代码。

I can't compile the code using a Model View Presenter(MVP) Hilt approach.

我收到此错误:
/ MotionPoC / app / build /generation/source/kapt/debug/com/aria/motionpoc/di/MotionApp_HiltComponents.java:145:错误:[Dagger / MissingBinding] com.aria.motionpoc.coupon.MainActivity如果没有@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()

已解决!谢谢您对Manuel Vivo的帮助!
https://github.com/riodext/ AndroidDaggerHiltMVP

推荐答案

问题是,您依赖于Activity的特定实现及其依赖项(即 MainActivity )对代码不满意。

The problem is that you're depending on a specific implementation of Activity and that dependency (i.e. MainActivity) is not satisfied in the code.

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

You'll have to provide that as a binding in the same module:

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

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

这篇关于如何在Dagger Hilt中获得MVP?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆