我正在做一个项目并在其上执行mvp,现在,我对所有 Activity 都有一个BaseActivity,并且一个BasePresenter可以与我所在的Activity的 View 一起工作,它可以附加,分离并知道我的 View 在哪里与演示者一起工作时是否为null。现在,这对于我的第一个 View 来说很好用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> {...但我想知道是否有一种方法可以扩展这样的多个 View abstract class BasePresenter<T : multipleViews> : Presenter<T> { (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您不能扩展多个类。您应该改用一些基本接口(interface)。你该怎么做基本演示者可以使用一些BaseView接口(interface):abstract class BasePresenter<T : BaseView> : Presenter<T>LoginContract.View接口(interface)应扩展BaseView。RegisterContract.View也应该扩展BaseView。然后,如果您需要一个可与所有 View 一起使用的通用演示器,则需要创建通用界面:interface AllViews: LoginContract.View, RegisterContract.View现在您可以在GeneralPresenter 中使用它class GeneralPresenter : BasePresenter<AllView>关于android - 如何使用我的BasePresenter扩展所有 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55503551/ (adsbygoogle = window.adsbygoogle || []).push({});
10-09 04:16