简体   繁体   中英

ClassCastException: android.widget.Button

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" (ei 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?

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).

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...

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM