hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.09k stars 604 forks source link

Caused by: java.lang.reflect.InvocationTargetException #122

Open fail572872916 opened 1 year ago

fail572872916 commented 1 year ago

当我在该框架上使用大疆sdk时,我遇到如下问题

 App has crashed, executing CustomActivityOnCrash's UncaughtExceptionHandler
                                                                                                    android.view.InflateException: Binary XML file line #18 in me.hgj.jetpackmvvm.demo:layout/fragment_home: Binary XML file line #18 in me.hgj.jetpackmvvm.demo:layout/fragment_home: Error inflating class dji.ux.widget.FPVOverlayWidget
                                                                                                    Caused by: android.view.InflateException: Binary XML file line #18 in me.hgj.jetpackmvvm.demo:layout/fragment_home: Error inflating class dji.ux.widget.FPVOverlayWidget
                                                                                                    Caused by: java.lang.reflect.InvocationTargetException

这是错误截图 mvvm错误 为了验证我,下载了此项目,将 fragment.xml中加入如下代码 <dji.ux.widget.FPVOverlayWidget android:id="@+id/fpv_overlay_widget" android:layout_width="match_parent" android:layout_height="match_parent" /> # 微信截图_20221103131446

我增加了以下依赖 微信截图_20221103131504

当我使用以下封装时可以正常使用viewbinding val aClass = (superclass as ParameterizedType).actualTypeArguments[0] as Class<*> try { val method = aClass.getDeclaredMethod("inflate", LayoutInflater::class.java) binding = method.invoke(null, layoutInflater) as T setContentView(binding!!.root) } catch (e: Exception) { e.printStackTrace() } 我不是很清楚您的封装问题出在哪里

hegaojian commented 1 year ago

这个可能是大疆SDK里面的 基础库版本太低了,导致DataBinding反射失败了,如果无法更改可以将当前Activity继承非DataBinding/ViewBinding 的基类,而去继承 BaseVmActivity

fail572872916 commented 1 year ago

我看到1.2.6的反射方式跟我提到的一样,我也回退到1.2.6试了下,结果还是失败,dji在组件里面有混淆操作,我不知道是不是这个原因造成的 aaaaaaa