我正在开发一个项目并在其上执行mvp,现在,我对所有活动都有一个BaseActivity,并且一个BasePresenter可以与我所处的活动视图一起工作,它可以附加,分离并知道任何地方与主持人一起工作时,我的观点是否为空。
现在,这对于我的第一个视图来说很好用
abstract class BasePresenter<T : LoginContract.View> : Presenter<T> {
private var mMvpView: T? = null
val isViewAttached: Boolean
get() = mMvpView != null
override fun attachView(view: T) {
mMvpView = view
}
override fun detachView() {
mMvpView = null
}
}
在演示者中,我这样称呼它
class LoginPresenter: BasePresenter<LoginContract.View>(), LoginContract.Presenter {
....
但是,现在,我正在创建一个名为 RegisterPresenter 的新演示者,当我使用BasePresenter <>与演示者扩展我的课程时,它要求在其中放置LoginContract.View
。
我知道,因为这里是这样编码的
abstract class BasePresenter<T : LoginContract.View> : Presenter<T> {
...
但是我想知道是否有一种方法可以扩展这样的多个视图
abstract class BasePresenter<T : multipleViews> : Presenter<T> {
答案 0 :(得分:1)
您不能扩展多个类。您应该改用一些基本接口。
BaseView
界面:abstract class BasePresenter<T : BaseView> : Presenter<T>
LoginContract.View
界面应扩展BaseView
。
RegisterContract.View
也应扩展BaseView
。
interface AllViews: LoginContract.View, RegisterContract.View
class GeneralPresenter : BasePresenter<AllView>