package com.base; import android.databinding.ViewDataBinding; import com.base.util.InstanceUtil; import java.lang.reflect.ParameterizedType; /** * Created by Administrator on 2016/4/5. */ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBinding> extends DataBindingActivity<B> { public P mPresenter; @Override protected void initPresenter() { if (this instanceof BaseView && this.getClass().getGenericSuperclass() instanceof ParameterizedType && ((ParameterizedType) (this.getClass().getGenericSuperclass())).getActualTypeArguments().length > 0) { Class mPresenterClass = (Class) ((ParameterizedType) (this.getClass() .getGenericSuperclass())).getActualTypeArguments()[0]; mPresenter = InstanceUtil.getInstance(mPresenterClass); mPresenter.setView(this); } } @Override protected void onDestroy() { super.onDestroy(); if (mPresenter != null) mPresenter.onDetached(); } }