package com.blankj.androidutilcode.base; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2017/03/28 * desc : Fragment-v4基类 * </pre> */ public abstract class BaseFragment extends Fragment implements View.OnClickListener { private static final String TAG = "BaseFragment"; private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN"; /** * 当前Activity渲染的视图View */ protected View contentView; /** * 上次点击时间 */ private long lastClick = 0; protected BaseActivity mActivity; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN); FragmentTransaction ft = getFragmentManager().beginTransaction(); if (isSupportHidden) { ft.hide(this); } else { ft.show(this); } ft.commit(); } Log.d(TAG, "onCreate: "); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { setRetainInstance(true); contentView = inflater.inflate(bindLayout(), null); Log.d(TAG, "onCreateView: "); return contentView; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); Bundle bundle = getArguments(); initData(bundle); initView(savedInstanceState, contentView); Log.d(TAG, "onViewCreated: "); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mActivity = (BaseActivity) getActivity(); doBusiness(mActivity); Log.d(TAG, "onActivityCreated: "); } /** * 初始化数据 * * @param bundle 传递过来的bundle */ public abstract void initData(Bundle bundle); /** * 绑定布局 * * @return 布局Id */ public abstract int bindLayout(); /** * 初始化view */ public abstract void initView(Bundle savedInstanceState, final View view); /** * 业务操作 * * @param context 上下文 */ public abstract void doBusiness(Context context); /** * 视图点击事件 * * @param view 视图 */ public abstract void onWidgetClick(View view); /** * 判断是否快速点击 * * @return {@code true}: 是<br>{@code false}: 否 */ private boolean isFastClick() { long now = System.currentTimeMillis(); if (now - lastClick >= 200) { lastClick = now; return false; } return true; } @Override public void onClick(View view) { if (!isFastClick()) onWidgetClick(view); } @Override public void onDestroyView() { if (contentView != null) { ((ViewGroup) contentView.getParent()).removeView(contentView); } super.onDestroyView(); Log.d(TAG, "onDestroyView: "); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy: "); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden()); } }