diff --git a/Lib_Base/src/main/AndroidManifest.xml b/Lib_Base/src/main/AndroidManifest.xml
index 6f94496..102648e 100644
--- a/Lib_Base/src/main/AndroidManifest.xml
+++ b/Lib_Base/src/main/AndroidManifest.xml
@@ -1,7 +1 @@
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameActivity.kt b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameActivity.kt
index 816b029..b561403 100644
--- a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameActivity.kt
+++ b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameActivity.kt
@@ -20,30 +20,22 @@ import java.lang.reflect.ParameterizedType
abstract class BaseFrameActivity :
AppCompatActivity() {
- protected val mViewModel: VM by lazy(mode = LazyThreadSafetyMode.NONE) {
- //init ViewModel | getActualTypeArguments [0]=是第一个泛型参数 | [1] = 是类的第二个泛型参数
- val tClass: Class =
- (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[1] as Class
- ViewModelProvider(this).get(tClass)
+ protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
+ val vbClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class
+ val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
+ inflate.invoke(null, layoutInflater) as VB
}
- protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
- getViewBindingReflex()
+ protected val mViewModel: VM by lazy(mode = LazyThreadSafetyMode.NONE) {
+ val vmClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[1] as Class
+ ViewModelProvider(this).get(vmClass)
}
protected abstract fun initView()
protected abstract fun initViewObserve()
- /**
- * 反射初始化ViewBinding
- */
- private fun getViewBindingReflex(): VB {
- val tClass: Class =
- (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class
- val infater = tClass.getMethod("inflate", LayoutInflater::class.java)
- return infater.invoke(null,layoutInflater) as VB
- }
-
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(mBinding.root)
diff --git a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameFragment.kt b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameFragment.kt
index 6b75197..b754596 100644
--- a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameFragment.kt
+++ b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameFragment.kt
@@ -11,6 +11,7 @@ import androidx.viewbinding.ViewBinding
import com.alibaba.android.arouter.launcher.ARouter
import com.quyunshuo.base.utils.EventBusRegister
import com.quyunshuo.base.utils.EventBusUtils
+import java.lang.reflect.ParameterizedType
/**
* @Author: QuYunShuo
@@ -18,16 +19,17 @@ import com.quyunshuo.base.utils.EventBusUtils
* @Class: BaseFrameFragment
* @Remark: Fragment基类 与项目无关
*/
-abstract class BaseFrameFragment(private val vmClass: Class) :
+abstract class BaseFrameFragment :
Fragment() {
+ protected lateinit var mBinding: VB
+
protected val mViewModel: VM by lazy(mode = LazyThreadSafetyMode.NONE) {
+ val vmClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[1] as Class
ViewModelProvider(this).get(vmClass)
}
- protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) { initViewBinding() }
-
- protected abstract fun initViewBinding(): VB
protected abstract fun initView()
protected abstract fun initViewObserve()
@@ -36,6 +38,10 @@ abstract class BaseFrameFragment(private val v
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
+ val vbClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class
+ val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
+ mBinding = inflate.invoke(null, layoutInflater, container, false) as VB
return mBinding.root
}
diff --git a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMActivity.kt b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMActivity.kt
index a60ed3e..beda88f 100644
--- a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMActivity.kt
+++ b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMActivity.kt
@@ -1,11 +1,13 @@
package com.quyunshuo.base.mvvm.v
import android.os.Bundle
+import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding
import com.alibaba.android.arouter.launcher.ARouter
import com.quyunshuo.base.utils.EventBusRegister
import com.quyunshuo.base.utils.EventBusUtils
+import java.lang.reflect.ParameterizedType
/**
* @Author: QuYunShuo
@@ -15,9 +17,12 @@ import com.quyunshuo.base.utils.EventBusUtils
*/
abstract class BaseFrameNotMVVMActivity : AppCompatActivity() {
- protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) { initViewBinding() }
-
- protected abstract fun initViewBinding(): VB
+ protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) {
+ val vbClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class
+ val inflate = vbClass.getMethod("inflate", LayoutInflater::class.java)
+ inflate.invoke(null, layoutInflater) as VB
+ }
protected abstract fun initView()
override fun onCreate(savedInstanceState: Bundle?) {
diff --git a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMFragment.kt b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMFragment.kt
index d7d4004..c6c7d37 100644
--- a/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMFragment.kt
+++ b/Lib_Base/src/main/java/com/quyunshuo/base/mvvm/v/BaseFrameNotMVVMFragment.kt
@@ -9,6 +9,7 @@ import androidx.viewbinding.ViewBinding
import com.alibaba.android.arouter.launcher.ARouter
import com.quyunshuo.base.utils.EventBusRegister
import com.quyunshuo.base.utils.EventBusUtils
+import java.lang.reflect.ParameterizedType
/**
* @Author: QuYunShuo
@@ -18,9 +19,8 @@ import com.quyunshuo.base.utils.EventBusUtils
*/
abstract class BaseFrameNotMVVMFragment : Fragment() {
- protected val mBinding: VB by lazy(mode = LazyThreadSafetyMode.NONE) { initViewBinding() }
+ protected lateinit var mBinding: VB
- protected abstract fun initViewBinding(): VB
protected abstract fun initView()
override fun onCreateView(
@@ -28,6 +28,10 @@ abstract class BaseFrameNotMVVMFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
+ val vbClass: Class =
+ (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class
+ val inflate = vbClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
+ mBinding = inflate.invoke(null, layoutInflater, container, false) as VB
return mBinding.root
}
diff --git a/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseActivity.kt b/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseActivity.kt
index 2ff9828..02ed1cd 100644
--- a/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseActivity.kt
+++ b/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseActivity.kt
@@ -10,5 +10,4 @@ import com.quyunshuo.base.mvvm.v.BaseFrameActivity
* @Class: BaseActivity
* @Remark: 项目相关的Activity基类
*/
-abstract class BaseActivity :
- BaseFrameActivity()
\ No newline at end of file
+abstract class BaseActivity : BaseFrameActivity()
\ No newline at end of file
diff --git a/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseFragment.kt b/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseFragment.kt
index b136eed..c71d5d5 100644
--- a/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseFragment.kt
+++ b/Lib_Common/src/main/java/com/quyunshuo/common/ui/BaseFragment.kt
@@ -10,5 +10,4 @@ import com.quyunshuo.base.mvvm.v.BaseFrameFragment
* @Class: BaseFragment
* @Remark: 项目相关的Fragment基类
*/
-abstract class BaseFragment(vmClass: Class) :
- BaseFrameFragment(vmClass)
\ No newline at end of file
+abstract class BaseFragment : BaseFrameFragment()
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 6ae3e96..7dd1ab4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -65,9 +65,6 @@ android {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
- buildFeatures {
- viewBinding = true
- }
}
dependencies {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f5de985..dd4776c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,15 +21,7 @@
android:supportsRtl="true"
android:theme="@style/base_AppTheme"
tools:ignore="UnusedAttribute">
-
-
-
-
-
-
+
{
-
- @Override
- protected void initView() {
- getMViewModel().test();
- getMBinding().testTv.setText("反射初始化 ViewBinding");
- }
-
- @Override
- protected void initViewObserve() {
-
- }
-
-}
diff --git a/app/src/main/java/com/quyunshuo/androidbaseframemvvm/MyViewModel.java b/app/src/main/java/com/quyunshuo/androidbaseframemvvm/MyViewModel.java
deleted file mode 100644
index 5636c66..0000000
--- a/app/src/main/java/com/quyunshuo/androidbaseframemvvm/MyViewModel.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.quyunshuo.androidbaseframemvvm;
-
-import android.util.Log;
-
-import androidx.lifecycle.ViewModel;
-
-/**
- * @author DBoy
- * @date 2020/9/26
- * Class 描述 :
- */
-public class MyViewModel extends ViewModel {
-
- public void test(){
- Log.e("DJC", "AAA");
- }
-}
diff --git a/app/src/main/res/layout/my_activity_layout.xml b/app/src/main/res/layout/my_activity_layout.xml
deleted file mode 100644
index 383e41c..0000000
--- a/app/src/main/res/layout/my_activity_layout.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file