package com.live.mylivewallpaper.base; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModel; import androidx.viewbinding.ViewBinding; import com.live.mylivewallpaper.viewmode.VMApplication; import com.live.mylivewallpaper.viewmode.ViewModelScope; public abstract class BaseFragment extends Fragment { private final ViewModelScope mViewModelScope = new ViewModelScope(); protected T Vb; protected AppCompatActivity mActivity; protected VMApplication vmApplication; public BaseFragment() { } @Override public void onAttach(@NonNull Context context) { super.onAttach(context); mActivity = (AppCompatActivity) context; } @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Vb = getFragmentVb(); vmApplication = getApplicationScopeViewModel(VMApplication.class); initView(); return Vb.getRoot(); } protected abstract T getFragmentVb(); protected abstract void initView(); protected K getFragmentScopeViewModel(@NonNull Class modelClass) { return mViewModelScope.getFragmentScopeViewModel(this, modelClass); } protected K getActivityScopeViewModel(@NonNull Class modelClass) { return mViewModelScope.getActivityScopeViewModel(mActivity, modelClass); } protected K getApplicationScopeViewModel(@NonNull Class modelClass) { return mViewModelScope.getApplicationScopeViewModel(modelClass); } }