问题
I have a really really really strange issue here.
I have this line of code:
SeekBar mProgressBar = (SeekBar) findViewById(R.id.SeekBar);
And it throws a ClassCastException: android.widget.Button as the title indicates. The XML file looks like this:
...
<SeekBar
android:id="@+id/SeekBar"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
...
If I change the code to
Button mProgressBar = (Button) findViewById(R.id.SeekBar);
It "works" (e.i that single line works. The programs then fails for other reasons because it's now a button). I have the exact same line in another file without problems. Any idea what could be wrong?
回答1:
Must be an outdated auto-generated R class. Sometimes it gets messed up, i had it just moments ago. Try to clean the project and rebuild again. Or change something in the layout XML and save, Eclipse should refresh the R class (that is, if you're using eclipse).
回答2:
If it's an outdated R class and your Eclipse is not updating it, then just create a new XML layout file with the same contents as the previous one. Then delete the previous layout file. Your R class should then be updated. I have this problem frequently on Linux, and this is the solution that works for me.
Choosing Project -> Clean does NOT solve my problem on Linux because the R class doesn't get recreated...
回答3:
Have you checked you got the right Button class from the right library imported. Sometimes other libraries can provide their own implementation and Eclipse will choose them over android.widget.Button. Obviously this will cause a crash as your layout will be referring to the button in the android library.
来源:https://stackoverflow.com/questions/6076426/classcastexception-android-widget-button