| | |
| | | import com.android.app_base.base.StateViewEnum; |
| | | import com.android.app_base.base.action.ClickAction; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.blankj.utilcode.util.ToastUtils; |
| | | import com.gyf.immersionbar.ImmersionBar; |
| | | import com.hjq.bar.TitleBar; |
| | | |
| | |
| | | public abstract class BaseFragment<VDB extends ViewDataBinding,VM extends BaseViewModel> extends Fragment implements TitleBarAction, ClickAction { |
| | | protected VDB binding; |
| | | protected VM viewModel; |
| | | private int viewModelId; |
| | | protected int viewModelId; |
| | | |
| | | /** |
| | | * 标题栏对象 |
| | | */ |
| | | private TitleBar mTitleBar; |
| | | protected TitleBar mTitleBar; |
| | | /** |
| | | * 状态栏沉浸 |
| | | */ |
| | | private ImmersionBar mImmersionBar; |
| | | protected ImmersionBar mImmersionBar; |
| | | /** |
| | | * 根布局 |
| | | */ |
| | | private View mRootView; |
| | | protected View mRootView; |
| | | /** |
| | | * 该Fragment是否加载过数据 |
| | | * */ |
| | | private boolean isLoaded; |
| | | protected boolean isLoaded; |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | |
| | | @Override |
| | | public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { |
| | | public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { |
| | | super.onViewCreated(view, savedInstanceState); |
| | | //绑定 ViewDataBinding 和 ViewModel |
| | | initViewDataBindingAndViewModel(); |
| | | //初始化状态视图 |
| | | initStateView(); |
| | | //初始化沉浸式状态栏和 titleBar |
| | | initStatusBar(); |
| | | //页面view初始化方法 |
| | | initView(); |
| | | //页面事件监听的方法,用于ViewModel层转到View层的事件注册 |
| | |
| | | @Override |
| | | public void onResume() { |
| | | super.onResume(); |
| | | //初始化沉浸式状态栏和 titleBar |
| | | initStatusBar(); |
| | | |
| | | if (!isLoaded){ |
| | | //页面数据初始化方法 |
| | | initData(); |
| | |
| | | */ |
| | | protected VDB initViewBinding(LayoutInflater inflater, @Nullable ViewGroup container) { |
| | | return DataBindingUtil.inflate(inflater,getLayoutId(), container, false); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | }); |
| | | viewModel.getMessageLivaData().observe(this, new Observer<String>() { |
| | | @Override |
| | | public void onChanged(String message) { |
| | | if (message != null){ |
| | | ToastUtils.showShort(message); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | /** |
| | | * 缺省页等状态视图的更新 |