package com.cheikh.lazywaimai.base; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBar; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import butterknife.Bind; import butterknife.ButterKnife; import com.cheikh.lazywaimai.R; import com.cheikh.lazywaimai.util.ContentView; import com.cheikh.lazywaimai.widget.LoadingDialog; /** * author: cheikh.wang on 16/11/23 * email: wanghonghi@126.com */ public abstract class BaseFragment<UC> extends CoreFragment<UC> { @Nullable @Bind(R.id.toolbar) Toolbar mToolbar; private LoadingDialog mLoading; @Override public final View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(getLayoutResId(), container, false); } @Override public final void onViewCreated(View view, @Nullable Bundle savedInstanceState) { ButterKnife.bind(this, view); initialToolbar(); handleArguments(getArguments()); initializeViews(savedInstanceState); } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } protected int getLayoutResId() { for (Class c = getClass(); c != Fragment.class; c = c.getSuperclass()) { ContentView annotation = (ContentView) c.getAnnotation(ContentView.class); if (annotation != null) { return annotation.value(); } } return 0; } protected void initialToolbar() { if (mToolbar != null) { mToolbar.setTitle(getTitle()); setSupportActionBar(mToolbar); if (isShowBack()) { getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } } protected void handleArguments(Bundle arguments) {} protected void initializeViews(Bundle savedInstanceState) {} protected Toolbar getToolbar() { return mToolbar; } protected String getTitle() { return null; } protected boolean isShowBack() { return true; } protected void setTitle(CharSequence title) { if (mToolbar != null) { mToolbar.setTitle(title); } } protected void setTitle(@StringRes int titleRes) { if (mToolbar != null) { mToolbar.setTitle(titleRes); } } protected void setSupportActionBar(Toolbar toolbar) { ((BaseActivity) getActivity()).setSupportActionBar(toolbar); } protected ActionBar getSupportActionBar() { return ((BaseActivity) getActivity()).getSupportActionBar(); } protected final void showLoading(@StringRes int textResId) { showLoading(getString(textResId)); } protected final void showLoading(String text) { cancelLoading(); if (mLoading == null) { mLoading = new LoadingDialog(getContext()); mLoading.setCancelable(false); mLoading.setCanceledOnTouchOutside(false); } mLoading.setTitle(text); mLoading.show(); } protected final void cancelLoading() { if (mLoading != null && mLoading.isShowing()) { mLoading.dismiss(); } } }