Pregunta

Tengo un programa de actividad sencilla en el androide. básicamente la clase sólo se extiende la actividad. Pero cuando lo inicio me sale un ClassCastException en el constructor de mi clase. yo incluso no tiene un constructor definido, por lo que debe estar en el constructor de la superclase que es la actividad.

desafortunadamente el depurador NO DA ninguna información detallada sobre qué clase que está tratando de molde.

aquí es el StackTrace:

Thread [<1> main] (Suspended (exception RuntimeException))  
    ActivityThread$PackageInfo.makeApplication(boolean, Instrumentation) line: 649  
    ActivityThread.handleBindApplication(ActivityThread$AppBindData) line: 4232 
    ActivityThread.access$3000(ActivityThread, ActivityThread$AppBindData) line: 125    
    ActivityThread$H.handleMessage(Message) line: 2071  
    ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
    Looper.loop() line: 123 
    ActivityThread.main(String[]) line: 4627    
    Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
    Method.invoke(Object, Object...) line: 521  
    ZygoteInit$MethodAndArgsCaller.run() line: 868  
    ZygoteInit.main(String[]) line: 626 
    NativeStart.main(String[]) line: not available [native method]  

y cuando miro en el RuntimeException me sale:

detailMessage "Unable to instantiate application com.test.MyApp: java.lang.ClassCastException: com.test.MyApp" (id=830067694464)

es el único código

package com.test;
import android.app.Activity;
public class MyApp extends Activity {

}
¿Fue útil?

Solución

  1. Abrir AndroidManifest.xml
  2. Para application etiqueta
  3. android:name elimina el atributo (si existe)
  4. Añadir android:name="android.app.Application" atributo

Esto es lo que hice y el problema había desaparecido.

P.S:. En el paso 4 utilizar el nombre de la clase de aplicaciones personalizadas si tiene uno (que es opcional)

Otros consejos

Yo tenía el mismo problema.

En mi caso tuve una clase que la aplicación extendida que se hace referencia en el archivo de manifiesto como un atributo de la etiqueta de aplicación.

Cuando me re-factorizada la clase Eclipse no incluyó la referencia en el manifiesto (comprensiblemente, pero frustrante y confusa) que dio lugar a este problema.

Esto se corresponde también con la respuesta de Maxim, pero la explicación parece ser la disparidad.

Cuando cambié el nombre del atributo para que coincida con el archivo que Retitulé el problema se resolvió.

He cometido un error tonto,

my_textView = (<b>Button</b>) findViewById(R.id.tvMyTextView);

y esto provocó la ClassCastException ..

i cambió esto a lo obvio,

my_textView = (<b>TextView</b>) findViewById(R.id.tvMyTextView);

y funcionó ..

No sé cómo, pero todo lo que puedo decir es que tales errores tontos también pueden causar el problema anterior ..

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
}

añadir esta y publicar su Manifest.xml completa

Yo tenía el mismo problema que ocurren de vez en cuando, a veces, aparentemente provocado por elementos re-pedidos en un diseño XML.

Si usted permite que la aplicación continúe la ejecución después de que la excepción no detectada, se debe constatar que se obtiene una StackTrace mucho más útil para "Logcat adb" de lo que puede salir fácilmente del depurador en el punto donde se detiene.

Esto suele señalar que en el lugar donde realmente se produjo la excepción, que en general no es el lugar donde se detiene en el depurador.

En mi caso, que parecía ser una falta de correspondencia entre identificadores de recursos - mover las cosas en el archivo XML parecía confundir las cosas de tal manera que cuando lo hice view.findViewById (R.id.something) no me la volvía objeto correcto. Estaba echando el objeto a una TextView, que debería haber sido perfectamente válida de acuerdo con el contenido de mi diseño de XML, pero estaba fallando.

Es posible que en realidad tienen un error en el que está haciendo un reparto no válido, lo que sin duda hará que esta excepción a suceder, pero en mi caso forzando una limpia y reconstruir resuelto el problema - que regenera los diseños compilados y recursos identificaciones a partir de cero, y todo funcionaba como se esperaba.

Si se utiliza Google Maps:

<uses-library android:name="com.google.android.maps" /> 

Recuerde esta línea. No puedo creer que se me olvidó y perdido tanto tiempo.

Estoy de acuerdo con la respuesta de Mahesh .. Esto ocurrirá debido a la asignación de la vista sin poner en ...

Lo mismo sucederá si usted está lanzando una vista ImageButton al botón Ver o alguna otra vista de clases.

Yo tenía el mismo problema, y ??que descubra, que esto causó mal uso de preferences.xml <CheckBoxPreference android:key="@+id/string" /> tenía que ser el cambio a <CheckBoxPreference android:key="string" />

tenido un problema similar con un ClassCastException diciéndome que no podía emitir un EditarTexto como un TextView. Yo no estaba tratando. Tratado de limpiar el proyecto pero recibió varios 'puede presentar no elimina errores ...'. Eclipse cerrada, se volvió a abrir, limpiar el proyecto. El problema desapareció. Es evidente que esto no funcionará en todos los casos, pero es una posibilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top