Administrator
2021-11-04 f7d36b0f2c254a048905ae27c9e421427eb0f2c8
app/src/main/java/com/duqing/missions/base/activities/BaseActivity.java
File was renamed from app/src/main/java/com/duqing/missions/base/BaseActivity.java
@@ -1,4 +1,4 @@
package com.duqing.missions.base;
package com.duqing.missions.base.activities;
import android.Manifest;
import android.app.AlertDialog;
@@ -26,6 +26,8 @@
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import androidx.viewbinding.ViewBinding;
import com.duqing.missions.MyApplication;
@@ -58,11 +60,13 @@
import okhttp3.ResponseBody;
/**
 * activity 封装
 * Created by Administrator on 2021/10/27 0027.
 */
public abstract class BaseActivity<B extends ViewBinding> extends AppCompatActivity {
public abstract class BaseActivity<B extends ViewBinding,VM extends ViewModel> extends AppCompatActivity {
    protected  B binding;
    protected  VM viewModel;
    protected String TAG ;
    public final String[] FILE_PERMISSIONS = new String []{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};
    public final String[] LOCATION_PERMISSIONS = new String []{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION};
@@ -106,10 +110,13 @@
        // get genericity "B"
        setStatusBarBgColor(R.color.white);
        setStatusBarTextColor(true);
        Class<B> entityClass = (Class<B>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
        try {
            final ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
            Class<B> entityClass = (Class<B>) type.getActualTypeArguments()[0];
            Method method = entityClass.getMethod("inflate", LayoutInflater.class);//get method from name "inflate";
            binding = (B) method.invoke(entityClass,getLayoutInflater());//execute method to create a objct of viewbind;
            Class<VM> vmClass = (Class<VM>) type.getActualTypeArguments()[1];
            viewModel = new ViewModelProvider(this).get(vmClass);
        } catch (Exception e) {
            e.printStackTrace();
        }