MyLiveWallpaper/app/src/main/java/com/live/mylivewallpaper/base/BaseFragment.java
litingting 3dab1d77c9 init
2024-12-21 11:03:46 +08:00

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);
}
}