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());
}
}