package com.tejia.lijin.app.view;
|
|
import android.os.Bundle;
|
import androidx.fragment.app.Fragment;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
|
import com.tejia.lijin.app.presenter.BasePresenter;
|
|
|
public abstract class BaseFragment<V, T extends BasePresenter<V>> extends Fragment {
|
public String TAG = getClass().getSimpleName() + "";
|
private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN";
|
protected T mPresenter;
|
//定义一个View用来保存Fragment创建的时候使用打气筒工具进行的布局获取对象的存储
|
protected View view;
|
private boolean first = false;//记录首次添加view
|
|
/**
|
* 当Fragment进行创建的时候执行的方法
|
*/
|
@Override
|
public void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
if (mPresenter == null) {
|
mPresenter = createPresenter();//创建presenter.
|
}
|
if (null != mPresenter) {
|
mPresenter.attachView((V) this);
|
}
|
}
|
|
@Override
|
public void onSaveInstanceState(Bundle outState) {
|
outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden());
|
}
|
|
/**
|
* 这个方法是关于Fragment完成创建的过程中,进行界面填充的方法,该方法返回的是一个view对象
|
* 在这个对象中封装的就是Fragment对应的布局
|
*/
|
@Override
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
if (view == null) {
|
first = true;//记录已经添加过一次
|
view = inflater.inflate(initFragmentView(), container, false);
|
} else {
|
try {
|
((ViewGroup) view.getParent()).removeView(view);
|
} catch (Exception e) {
|
container.removeView(view);
|
}
|
}
|
// view = inflater.inflate(initFragmentView(), container, false);
|
return view;
|
}
|
|
/**
|
* 这个方法当onCreateView方法中的view创建完成之后,执行
|
* 在inflate完成view的创建之后,可以将对应view中的各个控件进行查找findViewById
|
*/
|
@Override
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
if (first) {//只进入一次
|
initFragmentChildView(view);
|
}
|
first = false;
|
}
|
|
/**
|
* 这个方法是在Fragment完成创建操作之后,进行数据填充操作的时候执行的方法
|
*/
|
@Override
|
public void onActivityCreated(Bundle savedInstanceState) {
|
super.onActivityCreated(savedInstanceState);
|
initFragmentData(savedInstanceState);
|
}
|
|
/**
|
* 完成打气筒操作
|
*/
|
protected abstract int initFragmentView();
|
|
/**
|
* 进行findViewById的操作
|
*
|
* @param view 打气筒生成的View对象
|
*/
|
protected abstract void initFragmentChildView(View view);
|
|
/**
|
* 网络数据填充的操作
|
*
|
* @param savedInstanceState
|
*/
|
protected abstract void initFragmentData(Bundle savedInstanceState);
|
|
/**
|
* 创建Presenter对象
|
*/
|
protected abstract T createPresenter();
|
|
@Override
|
public void onDestroy() {
|
super.onDestroy();
|
if (null != mPresenter) {
|
mPresenter.detachView();
|
}
|
}
|
}
|