Linjiajia
2023-09-12 efafbbf142c81c233c71de636a2d3ce9dc2124f0
app_base/src/main/java/com/android/app_base/base/view/BaseFragment.java
@@ -4,7 +4,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
@@ -18,6 +17,7 @@
import com.android.app_base.action.TitleBarAction;
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.gyf.immersionbar.ImmersionBar;
import com.hjq.bar.TitleBar;
@@ -30,27 +30,27 @@
 * @date 2023.03.02. 15:50
 * @desc Fragment基类
 */
public abstract class BaseFragment<V extends ViewDataBinding,VM extends BaseViewModel> extends Fragment implements TitleBarAction {
    protected V binding;
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
@@ -65,20 +65,23 @@
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        isLoaded = false;
        if (getLayoutId() > 0){
            binding = DataBindingUtil.inflate(inflater,getLayoutId(), container, false);
            binding = initViewBinding(inflater, container);
            mRootView = binding.getRoot();
            return mRootView;
        }
        return null;
    }
    @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层的事件注册
@@ -88,8 +91,7 @@
    @Override
    public void onResume() {
        super.onResume();
        //初始化沉浸式状态栏和 titleBar
        initStatusBar();
        if (!isLoaded){
            //页面数据初始化方法
            initData();
@@ -122,6 +124,12 @@
        getLifecycle().addObserver(viewModel);
    }
    /**
     * 初始化ViewBinding
     */
    protected VDB initViewBinding(LayoutInflater inflater, @Nullable ViewGroup container) {
        return DataBindingUtil.inflate(inflater,getLayoutId(), container, false);
    }
    /**
     * 初始化ViewModel