Presenter抽象类
public interface IPresenter<V extends IView> {...}
Presenter基类
public class BasePresenter<V extends IView> implements IPresenter<V> {...}
网络请求基类
package com.qdtec.base.activity;
import com.qdtec.base.contract.IPresenter;
import com.qdtec.base.contract.IView;/**
 * Created by Administrator on 2016/9/12.
 */
public abstract class   BaseLoadActivity<P extends IPresenter> extends BaseActivity implements IView {
    protected P mPresenter;
    @Override
    protected void initPresenter() {
        mPresenter = createPresenter();
        if (mPresenter != null)
            mPresenter.attach(this);
    }    protected abstract P createPresenter();
    @Override
    protected void onDestroy() {
        super.onDestroy();        if (mPresenter != null) {
            mPresenter.detach();
            mPresenter = null;
        }    }    @Override
    public void onLowMemory() {
        super.onLowMemory();
        if (mPresenter != null) mPresenter.compositeSubClear();    }}
实现业务Presenter
public class AddCategoryPresenter extends BasePresenter<AddCategoryContract.View> implements AddCategoryContract.Presenter {}public class AddCategoryActivity extends BaseLoadMoreActivity<AddCategoryPresenter> implements AddCategoryContract.View{}
在转成kotlin时出错

解决方案 »

  1.   

    给你看下我的
    BasePresenter:open class BasePresenter<out V, out T>(view: V, activity: T) : LifeCycleListener {
        ......
    }BaseActivity:abstract class BaseActivity<P: BasePresenter<*, *>?> : AppCompatActivity() {    protected var presenter: P? = null    /**
         * 生命周期回调函数
         */
        private var lifeCycleListener: LifeCycleListener? = null
        fun setOnLifeCycleListener(listener: LifeCycleListener) {
            lifeCycleListener = listener
        }    override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            init()
        }    fun onCreate(savedInstanceState: Bundle?, layoutResID: Int) {
            super.onCreate(savedInstanceState)
            setContentView(layoutResID)
            init()
        }    /** 初始化部分工具类  */
        private fun init() {
            if (presenter == null) {
                presenter = obtainPresenter()
            }
        }    protected abstract fun obtainPresenter(): P?

    override fun onDestroy() {
            super.onDestroy()
            lifeCycleListener?.onDestroy()
        }

    }
    业务Presenter:class LoginPresenter(view: ILoginView, activity: LoginActivity) : BasePresenter<ILoginView, LoginActivity>(view, activity) {
    ......

    }Activity:class LoginActivity : BaseActivity<LoginPresenter<LoginActivity>>(), ILoginView{    override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_login)    }

    override fun obtainPresenter(): LoginPresenter<LoginActivity>? = LoginPresenter(this, this)

    }
      

  2.   

    看看attach方法怎么转换的
      

  3.   

    看看attach方法怎么转换的
      

  4.   

    这么改下试试吧interface IPresenter<V>{.....}public class BasePresenter<V : IView> : IPresenter<V>{……}abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}
      

  5.   

    这么改下试试吧interface IPresenter<V>{.....}public class BasePresenter<V : IView> : IPresenter<V>{……}abstract class BaseLoadActivity<P : IPresenter<IView>> : BaseActivity(), IView {……}Presenter在实现的时候不知道怎么弄