java - 引用 ImageView 子类获取 ClassCastException

标签 java android subclass android-imageview classcastexception

我有一个项目,我正在尝试为 ImageView 创建一个子类,以添加一些我想使用的方法。我只接触 Android 编码几周,所以我不是很有经验,而且对 OOP 还很陌生。由于我无法在我的主要项目中使用它,所以我做了一个小测试项目,唉,我得到了同样的错误。

首先,我创建了一个扩展 ImageView 的新类 ImageViewCustom.java

public class ImageViewCustom extends ImageView {}

(我已经添加了父类(super class)的构造函数)

在阅读 here 后,我确实喜欢在 XML 中

<ImageView class="com.example.testcustomclass.ImageViewCustom" 
    android:id="@+id/imageViewCustom" ... />

这适用于构建和运行,但是当我尝试像这样在 MainActivity 中引用它时

ImageViewCustom imageViewTest = (ImageViewCustom)
    findViewById(R.id.imageViewCustom);

我明白了...

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.example.testcustomclass.MainActivity}:
    java.lang.ClassCastException: android.widget.ImageView 
    cannot be cast to com.example.testcustomclass.ImageViewCustom

我做错了什么? D:我想我遗漏了一些非常基本的东西,因为这是一个几乎是空的项目。仅供引用,我想在今晚之前完成一项作业(呃!)并且得到了太多重复的代码我想做一个子类,但我很困惑并且压力很大 >_< sleep 不足等。

(编辑,修复代码格式...)

最佳答案

嗯,你的 XML 是关闭的......我总是使用

<com.my.project.MyView
     android:id="..."
/>

我认为这是正确的做法。

关于java - 引用 ImageView 子类获取 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900527/

相关文章:

java - Visualvm 不检测 Mac 上的应用程序

Java 泛型 : Unbounded wildcard is not working with Object type argument

android - Google Maps API v2 - 我无法在我的应用程序中显示 map

android - 是否可以在 Android 应用程序中注入(inject)代码?

java - 获取隐藏字段值

java - Google App Engine 数据存储区不支持运算符 +

java.lang.ClassCastException : casting an object, 给他的 parent

python - 如何让 python 类型检查器知道它应该返回其类的新实例?

java - 从子类访问和修改父类(super class)的属性?

python - 在 Python 中使用泛型动态键入子类