ClassCastException: android.widget.Button - PullRequest
5 голосов
/ 20 мая 2011

У меня действительно очень странная проблема.

У меня есть эта строка кода:

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

Это "работает" (например, работает одна строка. Затем программы завершаются ошибкой по другим причинам, потому чтотеперь это кнопка).У меня точная такая же строка в другом файле без проблем.Есть идеи, что может быть не так?

Ответы [ 3 ]

19 голосов
/ 20 мая 2011

Должно быть устаревшим автоматически сгенерированным R-классом.Иногда это портится, у меня это было несколько минут назад.Попробуйте очистить проект и перестроить заново.Или измените что-то в макете XML и сохраните, Eclipse должен обновить класс R (то есть, если вы используете eclipse).

1 голос
/ 03 декабря 2011

Если это устаревший класс R и ваш Eclipse не обновляет его, просто создайте новый файл макета XML с тем же содержимым, что и предыдущий.Затем удалите предыдущий файл макета.Ваш класс R должен быть обновлен.Я часто сталкиваюсь с этой проблемой в Linux, и это решение подходит мне.

Выбор проекта -> Очистить НЕ решает мою проблему в Linux, потому что класс R не воссоздается ...

0 голосов
/ 31 октября 2012

Вы проверили, правильно ли вы импортировали класс Button из правильной библиотеки? Иногда другие библиотеки могут предоставить свою собственную реализацию, и Eclipse выберет их вместо android.widget.Button. Очевидно, это приведет к сбою, так как ваш макет будет ссылаться на кнопку в библиотеке Android.

...