Fragment基类

Fragment基类

适用范围:
1.MVVM结构
2.Fragment与Activity共用一个ViewModel

public abstract class BaseFragment<M extends ViewModel, V extends ViewDataBinding> extends Fragment {

    protected V mBinding;
    protected M mViewModel;
    protected FragmentActivity mContext;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        mBinding = DataBindingUtil.inflate(inflater,setLayout(), container, false);
        mContext = requireActivity();
        initViewModel();
        setData(mViewModel);
        mBinding.setLifecycleOwner(mContext);
        initView(savedInstanceState);
        initListener();
        initViewObservable();
        return mBinding.getRoot();
    }

    protected void initViewModel() {
        Class<M> modelClass;
        Type type = getClass().getGenericSuperclass();
        if (type instanceof ParameterizedType) {
            modelClass = (Class<M>) ((ParameterizedType) type).getActualTypeArguments()[0];
        } else {
            modelClass = (Class<M>) ViewModel.class;
        }
        mViewModel = new ViewModelProvider(requireActivity(),
                new ViewModelProvider.NewInstanceFactory()).get(modelClass);
    }

    public abstract void initView(@Nullable Bundle savedInstanceState);

    public abstract void initListener();

    public abstract void initViewObservable();

    public abstract int setLayout();

    public abstract void setData(M viewModel);

    public V getBinding() {
        return mBinding;
    }

    public M getMusicViewModel() {
        return mViewModel;
    }

    public NavController getNavController() {
        return mNavController;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值