Merge remote-tracking branch 'origin/master'
This commit is contained in:
@ -7,7 +7,6 @@ import androidx.lifecycle.ViewModel
|
|||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.ViewModelStoreOwner
|
import androidx.lifecycle.ViewModelStoreOwner
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import java.lang.RuntimeException
|
|
||||||
import java.lang.reflect.InvocationTargetException
|
import java.lang.reflect.InvocationTargetException
|
||||||
import java.lang.reflect.ParameterizedType
|
import java.lang.reflect.ParameterizedType
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -31,7 +30,12 @@ object BindingReflex {
|
|||||||
val actualTypeArguments =
|
val actualTypeArguments =
|
||||||
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
||||||
for (i in actualTypeArguments.indices) {
|
for (i in actualTypeArguments.indices) {
|
||||||
val tClass = actualTypeArguments[i] as Class<V>
|
val tClass: Class<Any>
|
||||||
|
try {
|
||||||
|
tClass = actualTypeArguments[i] as Class<Any>
|
||||||
|
} catch (e: Exception) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if (ViewBinding::class.java.isAssignableFrom(tClass)) {
|
if (ViewBinding::class.java.isAssignableFrom(tClass)) {
|
||||||
val inflate = tClass.getMethod("inflate", LayoutInflater::class.java)
|
val inflate = tClass.getMethod("inflate", LayoutInflater::class.java)
|
||||||
return inflate.invoke(null, from) as V
|
return inflate.invoke(null, from) as V
|
||||||
@ -61,7 +65,12 @@ object BindingReflex {
|
|||||||
val actualTypeArguments =
|
val actualTypeArguments =
|
||||||
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
||||||
for (i in actualTypeArguments.indices) {
|
for (i in actualTypeArguments.indices) {
|
||||||
val tClass = actualTypeArguments[i] as Class<V>
|
val tClass: Class<Any>
|
||||||
|
try {
|
||||||
|
tClass = actualTypeArguments[i] as Class<Any>
|
||||||
|
} catch (e: Exception) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if (ViewBinding::class.java.isAssignableFrom(tClass)) {
|
if (ViewBinding::class.java.isAssignableFrom(tClass)) {
|
||||||
val inflate = tClass.getDeclaredMethod(
|
val inflate = tClass.getDeclaredMethod(
|
||||||
"inflate",
|
"inflate",
|
||||||
@ -96,9 +105,14 @@ object BindingReflex {
|
|||||||
val actualTypeArguments =
|
val actualTypeArguments =
|
||||||
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
||||||
for (i in actualTypeArguments.indices) {
|
for (i in actualTypeArguments.indices) {
|
||||||
val tClass = actualTypeArguments[i] as Class<VM>
|
val tClass: Class<Any>
|
||||||
|
try {
|
||||||
|
tClass = actualTypeArguments[i] as Class<Any>
|
||||||
|
} catch (e: Exception) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if (ViewModel::class.java.isAssignableFrom(tClass)) {
|
if (ViewModel::class.java.isAssignableFrom(tClass)) {
|
||||||
return ViewModelProvider(owner)[tClass]
|
return ViewModelProvider(owner)[tClass as Class<VM>]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return reflexViewModel<VM>(aClass.superclass, owner)
|
return reflexViewModel<VM>(aClass.superclass, owner)
|
||||||
@ -123,9 +137,14 @@ object BindingReflex {
|
|||||||
val actualTypeArguments =
|
val actualTypeArguments =
|
||||||
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
(Objects.requireNonNull(aClass.genericSuperclass) as ParameterizedType).actualTypeArguments
|
||||||
for (i in actualTypeArguments.indices) {
|
for (i in actualTypeArguments.indices) {
|
||||||
val tClass = actualTypeArguments[i] as Class<VM>
|
val tClass: Class<Any>
|
||||||
|
try {
|
||||||
|
tClass = actualTypeArguments[i] as Class<Any>
|
||||||
|
} catch (e: Exception) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
if (ViewModel::class.java.isAssignableFrom(tClass)) {
|
if (ViewModel::class.java.isAssignableFrom(tClass)) {
|
||||||
return ViewModelProvider(fragment.requireActivity())[tClass]
|
return ViewModelProvider(fragment.requireActivity())[tClass as Class<VM>]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return reflexViewModelShared<VM>(aClass.superclass, fragment)
|
return reflexViewModelShared<VM>(aClass.superclass, fragment)
|
||||||
|
|||||||
Reference in New Issue
Block a user