public abstract class BaseFragment<P extends BasePresenter,M extends BaseModel> extends Fragment {
/**
* 视图是否已经初初始化
*/
public Activity mActivity;
public P mPresenter;
public M mModel;
private Unbinder bind;
public boolean isViewInited = false;
public boolean isVisibleToUser = false;
@Override
public void onAttach(Context context) {
mActivity = (Activity) context;
super.onAttach(context);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(getFragmentLayoutId(), container, false);
bind = ButterKnife.bind(this, inflate);
init();
isViewInited = true;
if (isViewInited && isVisibleToUser)
initData();
return inflate;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisibleToUser = isVisibleToUser;
Log.e("TAG",isVisibleToUser+"--"+this.getClass().getName());
if(isVisibleToUser&&isViewInited){
initData();
}
}
@Override
public void onDestroy() {
bind.unbind();
mActivity = null;
super.onDestroy();
}
private void init() {
mPresenter = TUtils.getT(this, 0);
mModel = TUtils.getT(this, 1);
if (this instanceof BaseView) {
mPresenter.setMv(mModel, this);
}
initView();
}
protected abstract void initView();
protected abstract void initData();
public abstract int getFragmentLayoutId();
}
Fragment预防预加载
最新推荐文章于 2021-06-09 16:47:32 发布
本文介绍了一个公共的BaseFragment抽象类实现,该类用于简化Fragment的生命周期管理,并提供与Presenter和Model交互的基础结构。BaseFragment实现了Fragment的常用逻辑,如视图初始化、数据加载等,以减少子类中的重复代码。
7万+

被折叠的 条评论
为什么被折叠?



