BaseActivity中
public abstract class BaseActivity<T extends BaseContract.BasePresenter> extends AppCompatActivity implements IBase,BaseContract.BaseView{ @Inject protected T mPresenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getContentLayout()); inject(); mPresenter.attachView(this); } @Override protected void onDestroy() { super.onDestroy(); mPresenter.detachView(); } @Override public void showLoading() { } @Override public void dimissLoading() { } @Override public void initView(View view) { } }
写一个IBase接口
public interface IBase { int getContentLayout(); void inject(); void initView(View view); }然后写一个 BaseContract
public interface BaseContract { interface BasePresenter<T extends BaseView>{ void attachView(T view); void detachView(); } interface BaseView{ void showLoading(); void dimissLoading(); } }如果是fragment那么写一个BaseFragment
public abstract class BaseFragment<T extends BaseContract.BasePresenter> extends Fragment implements IBase,BaseContract.BaseView { @Inject protected T mPresenter; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); inject(); mPresenter.attachView(this); } @Override public void onDestroy() { super.onDestroy(); mPresenter.detachView(); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(getContentLayout(), null); initView(view); return view; } @Override public void showLoading() { } @Override public void dimissLoading() { } }
写一个BasePresenter
public class BasePresenter<T extends BaseContract.BaseView> implements BaseContract.BasePresenter<T> { protected T mView; @Override public void attchView(T view) { this.mView = view; } @Override public void detachView() { if (mView != null) { mView = null; } } }