我有一个项目,我正在尝试为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;睡眠不足等。
(编辑,修复代码格式......)
答案 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" ... />