2011-05-20 15 views
5

Tengo un problema realmente muy extraño aquí.ClassCastException: android.widget.Button

que tienen esta línea de código:

SeekBar mProgressBar = (SeekBar) findViewById(R.id.SeekBar); 

Y lanza un ClassCastException : android.widget.Button como indica el título. El archivo XML es el siguiente:

... 
<SeekBar 
android:id="@+id/SeekBar" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
/> 
... 

Si cambio el código para

Button mProgressBar = (Button) findViewById(R.id.SeekBar); 

"funciona" (ei que sola línea funciona Los programas a continuación, falla por otras razones porque es ahora un botón.) Tengo la exacta misma línea en otro archivo sin problemas. ¿Alguna idea de lo que podría estar mal?

+0

¿Tiene la R correcta importada? – Haphazard

Respuesta

19

Debe ser una clase R obsoleta autogenerada. A veces se arruina, lo tuve hace unos momentos. Intenta limpiar el proyecto y reconstruir nuevamente. O cambie algo en el diseño XML y guarde, Eclipse debería actualizar la clase R (es decir, si usa eclipse).

+0

Un chico informó que incluso la reconstrucción no ayudó y necesitó volver a agregar el proyecto al eclipse. Ver [aquí] (http://stackoverflow.com/questions/5955580/android-custom-adapter-getview-nullpointerexception-out-of-nowhere/5956074#5956074). Estoy seguro de que hay una manera de forzar la reconstrucción completa de R.java también desde la línea de comandos, pero nunca busqué eso. – compostus

+1

Forzar la reconstrucción del proyecto resolvió el problema. Gracias –

+0

Esto me ha pasado algunas veces. Cambiar una cosa simple en un diseño xml y guardar resuelve el problema. Gracias. – SBerg413

1

Si se trata de una clase R obsoleta y su Eclipse no la está actualizando, simplemente cree un nuevo archivo de diseño XML con el mismo contenido que el anterior. A continuación, elimine el archivo de diseño anterior. Su clase R debería actualizarse. Tengo este problema frecuentemente en Linux, y esta es la solución que funciona para mí.

La elección del proyecto -> Limpio hace NO resolver mi problema en Linux porque la clase I no consigue recrear ...

0

Ha comprobado que tienes la clase Button derecha desde la biblioteca de derecho importado. A veces, otras bibliotecas pueden proporcionar su propia implementación y Eclipse las elegirá sobre android.widget.Button. Obviamente, esto causará un bloqueo ya que su diseño se referirá al botón en la biblioteca de Android.

Cuestiones relacionadas