引用ImageView子类获取ClassCastException

时间:2013-02-15 17:54:22

标签: java android subclass android-imageview classcastexception

我有一个项目,我正在尝试为ImageView创建一个子类,添加一些我想要使用的方法。我只用了几个星期进行Android编码,所以我不是很有经验,而且对OOP来说还算新手。由于我无法让它在我的主项目中工作,我做了一个小测试项目,唉,我得到了同样的错误。

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

public class ImageViewCustom extends ImageView {}

(我已经从超类中添加了构造函数)

在阅读here

之后,我确实喜欢这样做
<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:我认为我遗漏了一些非常基本的东西,因为这是一个几乎空洞的项目。仅供参考我想在今晚完成一项任务(呃!),并且有很多重复的代码我想做一个子类,但是我很难过并且压力很大&gt; _&lt;睡眠不足等。

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

2 个答案:

答案 0 :(得分:3)

你的XML已关闭......我总是使用

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

我认为这是正确的方法。

答案 1 :(得分:0)

如果您在xml布局中引用视图,则不需要使用类

替换

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

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