package com.codeest.geeknews.base; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.View; import android.view.ViewGroup; import com.codeest.geeknews.app.App; import com.codeest.geeknews.di.component.DaggerFragmentComponent; import com.codeest.geeknews.di.component.FragmentComponent; import com.codeest.geeknews.di.module.FragmentModule; import com.codeest.geeknews.util.SnackbarUtil; import javax.inject.Inject; /** * Created by codeest on 2016/8/2. * MVP Fragment基类 */ public abstract class BaseFragment<T extends BasePresenter> extends SimpleFragment implements BaseView { @Inject protected T mPresenter; protected FragmentComponent getFragmentComponent(){ return DaggerFragmentComponent.builder() .appComponent(App.getAppComponent()) .fragmentModule(getFragmentModule()) .build(); } protected FragmentModule getFragmentModule(){ return new FragmentModule(this); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { initInject(); mPresenter.attachView(this); super.onViewCreated(view, savedInstanceState); } @Override public void onDestroyView() { if (mPresenter != null) mPresenter.detachView(); super.onDestroyView(); } @Override public void showErrorMsg(String msg) { SnackbarUtil.show(((ViewGroup) getActivity().findViewById(android.R.id.content)).getChildAt(0), msg); } @Override public void useNightMode(boolean isNight) { } @Override public void stateError() { } @Override public void stateEmpty() { } @Override public void stateLoading() { } @Override public void stateMain() { } protected abstract void initInject(); }