天问Lv0 2018-02-07 01:38 采纳率: 50%
浏览 2125
已结题

Android Kotlin反射获取属性列表出现的TypeNotPresentException问题

本人刚开始使用Kotlin的菜鸟一枚,请教以下问题

Android中使用Kotlin的反射,用来获取一个Activity或任意类中的属性信息,使用方式是obj::class.declaredMemberProperties,obj是一个Activity。结果在运行时发生以下错误

Caused by: java.lang.TypeNotPresentException: Type android/support/v4/app/ActivityCompat$SharedElementCallback23Impl not present at java.lang.Class.getDeclaredClasses(Native Method) at java.lang.Class.getDeclaredClasses(Class.java:534) at kotlin.reflect.jvm.internal.structure.ReflectJavaClass.getInnerClassNames(ReflectJavaClass.kt:35)....

根据错误SharedElementCallback23Impl知道是没有对应的类,尝试使用6.0(23)以上版本运行,运行正常。可以知道是因为kotlin在低版本运行时乃然按照开发时最高版本进行各属性获取导致的错误,但不知道怎样避免。已知可以使用obj.javaClass.declaredFields来获取,没有问题,但是用上面的方式应该如何进行,请大神指点。

  • 写回答

2条回答

  • threenewbee 2018-02-07 15:49
    关注

    缺少jar包,或者你的类明写错了,或者jar版本不兼容。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器