我正在研究一个项目并在其上做mvp,现在,我有一个BaseActivity用于我的所有活动和一个BasePresenter,它与我所在的Activity的视图一起工作,这是为了附加,ditach并知道我的视图在哪里使用我的演示者时是否为null。
现在,这对我的第一个视图工作正常
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> {
您无法扩展多个类。您应该使用一些基本接口。
BaseView
接口:abstract class BasePresenter<T : BaseView> : Presenter<T>
LoginContract.View
接口应该扩展BaseView
。 RegisterContract.View
也应该扩展BaseView
。
interface AllViews: LoginContract.View, RegisterContract.View
class GeneralPresenter : BasePresenter<AllView>