我这里有一个非常奇怪的问题。
我有这行代码:
SeekBar mProgressBar = (SeekBar) findViewById(R.id.SeekBar);
它会抛出一个 ClassCastException:android.widget.Button ,如标题所示。 XML文件如下所示:
...
<SeekBar
android:id="@+id/SeekBar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
...
如果我将代码更改为
Button mProgressBar = (Button) findViewById(R.id.SeekBar);
它“有效”(e.i单行有效。程序因其他原因失败,因为它现在是一个按钮)。我在另一个文件中有完全相同的行没有问题。知道什么可能是错的吗?
答案 0 :(得分:19)
必须是过时的自动生成的R类。有时它会搞砸了,我刚才就知道了。尝试清理项目并重新重建。或者更改布局XML中的内容并保存,Eclipse应该刷新R类(也就是说,如果你正在使用eclipse)。
答案 1 :(得分:1)
如果它是一个过时的R类而你的Eclipse没有更新它,那么只需创建一个新的XML布局文件,其内容与前一个相同。然后删除以前的布局文件。然后应更新您的R类。我经常在Linux上遇到这个问题,这是适合我的解决方案。
选择项目 - &gt; Clean NOT 在Linux上解决我的问题因为R类没有重新创建......
答案 2 :(得分:0)
您是否检查过导入的右侧库中是否有正确的Button类。有时其他库可以提供自己的实现,Eclipse将通过android.widget.Button选择它们。显然这会导致崩溃,因为你的布局将引用android库中的按钮。