使用findViewById时出现意外的ClassCastException

时间:2010-12-29 16:35:24

标签: android layout classcastexception

我使用'可搜索的词典'来进入Android开发。

我的问题是在修改XML布局时我得到了一些ClassCastException

我的猜测是R文件已经过时,但奇怪的是,即使重新创建它,我仍然遇到问题。

以下是相关的代码和日志:

日志文件:

  

引起:java.lang.ClassCastException:android.widget.ImageButton   E / AndroidRuntime(438):at   eu.accleaner.android.WordActivity.onCreate(WordActivity.java:87)

活动中的有罪行:

mDefinition = (TextView) findViewById(R.id.definition);

提前感谢您的帮助。

干杯,

文森特

3 个答案:

答案 0 :(得分:3)

从它的外观来看,XML中有一个ID为“定义”的ImageButton,并且您正在尝试将其转换为TextView。将TextView强制转换为ImageButton。

答案 1 :(得分:3)

我有类似的问题。 R.java基于android:id在xml中生成ID:
public static final int imageButton01=0x7f050001;
public static final int definition=0x7f050002;

当我添加新的图像按钮时,R.java将更新为
public static final int imageButton01=0x7f050001;
public static final int imageButton02=0x7f050002;
public static final int definition=0x7f050003;

由于同步问题R.id.definition0x7f050002中返回旧ID mDefinition = (TextView) findViewById(R.id.definition);但根据更新的R.java,它对应于另一个元素(ImageButton02)。

所以我们有ClassCastException

答案 2 :(得分:0)

解决方法:在Layout XML和findViewById()中分配一些新的'id'值。

这很可能是一个错误。