55 lines
1.9 KiB
Java
55 lines
1.9 KiB
Java
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<T extends ViewBinding> 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 extends ViewModel> K getFragmentScopeViewModel(@NonNull Class<K> modelClass) {
|
|
return mViewModelScope.getFragmentScopeViewModel(this, modelClass);
|
|
}
|
|
protected <K extends ViewModel> K getActivityScopeViewModel(@NonNull Class<K> modelClass) {
|
|
return mViewModelScope.getActivityScopeViewModel(mActivity, modelClass);
|
|
}
|
|
|
|
protected <K extends ViewModel> K getApplicationScopeViewModel(@NonNull Class<K> modelClass) {
|
|
return mViewModelScope.getApplicationScopeViewModel(modelClass);
|
|
}
|
|
} |