作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法使用 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()
解决了!感谢您的帮助曼努埃尔体内!
最佳答案
问题是您依赖于 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/
我是一名优秀的程序员,十分优秀!