梦幻大大 发表于 2021-2-22 11:04

安卓强制类型转换

本帖最后由 梦幻大大 于 2021-2-23 08:15 编辑

错误信息

java.lang.ClassCastException: com.google.android.material.textview.MaterialTextView cannot be cast to com.google.android.material.textview.MaterialTextView
相关代码

MaterialTextView itemView =(MaterialTextView)ViewUtil.findViewByName(activity, "andorid", "settings_root_layout");

其他

ViewUtil.findViewByName()方法返回的是View类型,是MaterialTextView类型的父类

问题

为什么两个类型一致不能转换?感觉挺诡异的,使用instanceof关键字测试结果为false

      

萌萌哒胖次 发表于 2021-2-22 11:14

是不是不同版本的同名类

输出类全名看看吧

hackmogu 发表于 2021-2-22 11:32

检查下settings_root_layout

Junpre 发表于 2021-2-22 21:39

不懂Android开发,但是懂Java,Android中强制转换也得符合Java基本法

Java中声明为父类型的对象能够强制转换回子类型的前提是这个对象本身确实是子类型或子类型的子类的对象。

所以应该确认一下ViewUtil.findViewByName()返回的确实是MaterialTextView或MaterialTextView的子类

页: [1]
查看完整版本: 安卓强制类型转换