package com.codeest.geeknews.base; import android.support.v7.app.AppCompatDelegate; import android.view.ViewGroup; import com.codeest.geeknews.app.App; import com.codeest.geeknews.di.component.ActivityComponent; import com.codeest.geeknews.di.component.DaggerActivityComponent; import com.codeest.geeknews.di.module.ActivityModule; import com.codeest.geeknews.util.SnackbarUtil; import javax.inject.Inject; /** * Created by codeest on 2016/8/2. * MVP activity基类 */ public abstract class BaseActivity<T extends BasePresenter> extends SimpleActivity implements BaseView { @Inject protected T mPresenter; protected ActivityComponent getActivityComponent(){ return DaggerActivityComponent.builder() .appComponent(App.getAppComponent()) .activityModule(getActivityModule()) .build(); } protected ActivityModule getActivityModule(){ return new ActivityModule(this); } @Override protected void onViewCreated() { super.onViewCreated(); initInject(); if (mPresenter != null) mPresenter.attachView(this); } @Override protected void onDestroy() { if (mPresenter != null) mPresenter.detachView(); super.onDestroy(); } @Override public void showErrorMsg(String msg) { SnackbarUtil.show(((ViewGroup) findViewById(android.R.id.content)).getChildAt(0), msg); } @Override public void useNightMode(boolean isNight) { if (isNight) { AppCompatDelegate.setDefaultNightMode( AppCompatDelegate.MODE_NIGHT_YES); } else { AppCompatDelegate.setDefaultNightMode( AppCompatDelegate.MODE_NIGHT_NO); } recreate(); } @Override public void stateError() { } @Override public void stateEmpty() { } @Override public void stateLoading() { } @Override public void stateMain() { } protected abstract void initInject(); }