package com.moral.screen.base; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.moral.andbrickslib.utils.ToastUtils; import com.moral.andbrickslib.utils.dialog.SweetDialogUtils; import com.moral.andbrickslib.views.EmptyLayout; import com.moral.andbrickslib.views.SweetAlert.SweetAlertDialog; import com.moral.screen.R; import com.moral.screen.httputils.HttpUtils; /** * Fragment基类 * Created by haijiang on 2017/5/2. */ public abstract class BaseFragment extends Fragment implements View.OnClickListener { /** * 多状态界面 */ protected EmptyLayout mEmptyLayout; /** * 加载进度条 */ protected SweetAlertDialog progressDialog; /** * 吐司工具类 */ protected ToastUtils mToatUtils; protected HttpUtils mHttpUtils; protected View convertView; private SparseArray mViews; protected abstract int getLayoutId(); protected abstract void initViews(); protected abstract void initListener(); protected abstract void initData(); protected abstract void processClick(View v); @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (convertView == null) { progressDialog = SweetDialogUtils.showProgressDialog(getActivity(),"正在努力加载...", R.color.colorAccent); mToatUtils = new ToastUtils(getActivity()); mHttpUtils = new HttpUtils(getActivity()); mViews = new SparseArray<>(); convertView = inflater.inflate(getLayoutId(), null); initViews(); initData(); initListener(); } else { ViewGroup parent = (ViewGroup) convertView.getParent(); if (parent != null) { parent.removeView(convertView); } } return convertView; } public E findView(int viewId) { if (convertView != null) { E view = (E) mViews.get(viewId); if (view == null) { view = (E) convertView.findViewById(viewId); mViews.put(viewId, view); } return view; } return null; } @Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) { try{ super.onViewStateRestored(savedInstanceState); }catch(Exception e){} } @Override public void onResume() { super.onResume(); } @Override public void onPause() { super.onPause(); } @Override public void onDestroyView() { super.onDestroyView(); } @Override public void onClick(View v) { processClick(v); } /** * 初始化加载界面 */ protected void initMulitiStatusView(int empty_layout) { mEmptyLayout = findView(empty_layout); /** * 错误页面刷新 */ mEmptyLayout.setOnLayoutClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setLoadingView(); onErrorPagerClick(); } }); } /** * 界面加载出错重载 */ protected abstract void onErrorPagerClick(); /** * 空界面 */ public void setEmptyView() { if(mEmptyLayout == null){ return; } mEmptyLayout.setErrorType(EmptyLayout.NODATA); } /** * 错误界面 */ public void setErrorView() { if(mEmptyLayout == null){ return; } mEmptyLayout.setErrorType(EmptyLayout.NETWORK_ERROR); } /** * 我的界面 */ public void setNormalView() { if(mEmptyLayout == null){ return; } mEmptyLayout.dismiss(); } /** * 加载中界面 */ public void setLoadingView() { if(mEmptyLayout == null){ return; } mEmptyLayout.setErrorType(EmptyLayout.NETWORK_LOADING); } }