File was renamed from app/src/main/java/com/duqing/missions/base/BaseActivity.java |
| | |
| | | package com.duqing.missions.base; |
| | | package com.duqing.missions.base.activities; |
| | | |
| | | import android.Manifest; |
| | | import android.app.AlertDialog; |
| | |
| | | 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; |
| | |
| | | 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}; |
| | |
| | | // 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(); |
| | | } |