java.lang.RuntimeException: no se puede crear una instancia de la actividad ComponentInfo

Estaba tratando de ejecutar un código de muestra. Al iniciar la aplicación en el emulador de Android 1.5, obtuve estos errores … ¿Alguien tiene alguna pista …?

ERROR de LogCat:

01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.android.test/com.s.android.test.MainActivity}: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk] 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.os.Handler.dispatchMessage(Handler.java:99) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.os.Looper.loop(Looper.java:123) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.main(ActivityThread.java:3647) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.reflect.Method.invokeNative(Native Method) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.reflect.Method.invoke(Method.java:507) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.NativeStart.main(Native Method) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk] 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536) 01-13 02:28:08.392: ERROR/AndroidRuntime(2888): ... 11 more 01-13 02:28:08.407: WARN/ActivityManager(112): Force finishing activity com.s.android.test/.MainActivity 

Editar Este error le ocurre a la mayoría de los principiantes, el hecho es que debe agregar todas sus actividades en el archivo Manifiesto.

Es un problema de tu Intención.

Por favor agregue su Activity en su AndroidManifest.xml .

Cuando desee realizar una nueva actividad, debe registrarla en su AndroidManifest.xml .

En mi caso, olvidé agregar la biblioteca de google maps

  ....   

Además, verifique que no le falta el punto anterior antes de la ruta de la actividad

  

Es posible que esté intentando encontrar la vista antes de onCreate() que es incorrecta.

 public class MainActivity extends Activity { ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... } 

Hay otra forma de obtener una java.lang.RuntimeException: no se puede instanciar la actividad de la excepción ComponentInfo y esa es la actividad que está intentando iniciar es abstracta . Cometí este estúpido error una vez y es muy fácil pasarlo por alto.

Imagen

También sucede debido a este problema. Desmarqué las jarras que necesitaban ser exportadas a la aplicación y sucedió lo mismo. Marque las jarras que su aplicación necesita para ejecutarse.

Encontré este problema también, pero de una manera ligeramente diferente. Aquí estaba mi escenario:

Detalle de la aplicación:

  • Usar ActionBarSherlock como una biblioteca
  • Utilizando android-support-v4-r7-googlemaps.jar en la biblioteca ActionBarSherlock para poder usar un “fragmento de mapa” en mi proyecto principal
  • Agregué el jar a la ruta de comstackción de mi proyecto principal
  • Incluido el en los manifiestos del proyecto de la biblioteca y mi proyecto principal (¿puede que esto no sea necesario en la biblioteca?)
  • El manifiesto en el proyecto principal tenía la definición de actividad adecuada y todas las propiedades apropiadas
  • No tuve una actividad abstracta ni ninguno de los otros errores que he visto en Stack Overflow relacionado con este problema.

Sin embargo, todavía encontré el error descrito en la publicación original y no pude conseguir que desapareciera. El problema, sin embargo, fue ligeramente diferente en un aspecto:

  • Solo afectó una nueva instalación de la aplicación a mi dispositivo. Cada vez que la aplicación se instala por primera vez, me aparece el error precedido por varias “advertencias” de: No se puede resolver la superclase de FragmentActivity
  • Esas advertencias se remontan a la biblioteca ActionBarSherlock
  • La aplicación se cerraría y se cerraría.
  • Si inmediatamente reconstruí y rediseñé la aplicación, funcionó bien.
  • La única vez que se estrelló fue en una instalación totalmente nueva. Si desinstalo la aplicación, creada e implementada nuevamente desde Eclipse, se bloqueará. Build / deploy por segunda vez, funcionaría bien.

Cómo lo arreglé:

  • En el proyecto de la biblioteca ActionBarSherlock, agregué el android-support-v4-r7-googlemaps.jar a la ruta de comstackción
  • Este paso solo no solucionó el problema

  • Una vez que el jar se agregó a la ruta de comstackción, cambié el orden en la ruta Java Build> pestaña Ordenar y exportar – configuré el JAR en el primer elemento de la lista (fue el último después de los elementos / src y / gen )

  • Luego reconstruí y rediseñé la aplicación a mi dispositivo, funcionó como se esperaba en una nueva instalación. Solo para estar seguro, lo desinstalé de nuevo 2-3 veces y volví a instalar, todavía funcionaba como esperaba.

Esto puede ser un error total de novato, pero pasé bastante tiempo buscando publicaciones y mi código para resolverlo, así que espero que pueda ser útil para otra persona. Puede que no solucione todas las situaciones, pero en este caso particular, eso terminó siendo la solución a mi problema.

Este error también puede ser la señal definitiva de un error tonto (como cuando yo – quiero decir, tos, como cuando un amigo mío que me mostró su código una vez) donde intentan ejecutar código fuera de un método como tratar de hacer esto :

 SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc @Override public void onCreate(Bundle savedInstanceState) { .... } 

En vez de esto:

 SQLiteDatabase db; @Override public void onCreate(Bundle savedInstanceState) { db = openOrCreateDatabase("DB", MODE_PRIVATE, null); .... } 

Puede que esto no sea relevante para la pregunta real, pero en mi caso, traté de implementar Kotlin y de apply plugin: 'kotlin-android' . El error ocurrió porque no pudo reconocer MainActivity como un archivo .kt.

Espero que ayude a alguien.

Me deshice de este problema al eliminar la carpeta Bin y Gen del proyecto (que volverá automáticamente cuando se construirá el proyecto) y luego limpiar el proyecto desde -> Menú -> Proyecto -> limpiar.

Gracias.

En mi caso, no configuré setContentView(R.layout.main);

Si crea una clase nueva, no intente configurar esto en el onCreate(Bundle savedInstanceState) .

He cometido este estúpido error varias veces.

Simplemente limpie su proyecto de trabajo o reinicie eclipse. Luego ejecuta tu proyecto. funcionará.

Para mí, mi cadena de paquete en AndroidManifest.xml era incorrecta (copiada de un tutorial). Asegúrese de que la cadena del paquete en este archivo sea la misma que su actividad principal, por ejemplo

  package="com.example.app" 

Una forma fácil de hacerlo es abrir el archivo AndroidManifest.xml en la pestaña “Manifiesto” y escribirlo en el cuadro de texto junto a Paquete, o usar el botón Examinar.

Además, la cadena del paquete para mi actividad era incorrecta, por ejemplo

  

Yo (estúpidamente) recibí el mismo error semanas más tarde cuando cambié el nombre de mi paquete. Si haces esto, asegúrate de actualizar también el archivo AndroidManifest.xml .

Ok, tengo bastante experiencia en el iPhone pero soy nuevo en Android. Recibí este problema cuando tuve:

 Button infoButton = (Button)findViewById(R.id.InfoButton); 

esta línea de código arriba:

 @Override public void onCreate (Bundle savedInstanceState) { } 

Puede ser que tenga falta de sueño: P

Recientemente encontré esto con la nueva instalación de Eclipse. Resulta que mi nivel de cumplimiento del comstackdor se estableció en Java 1.7 y el proyecto requerido 1.6.

En Eclipse: Proyecto -> Propiedades -> Comstackdor de Java -> Cumplimiento de JDK

Obtuve este problema y lo solucioné configurando la propiedad “modo de lanzamiento” de la actividad.

Otra razón de este problema puede ser una biblioteca faltante.

Vaya a Propiedades -> Android y verifique que agrega las bibliotecas correctamente

Tuve el mismo problema, pero mi actividad se declaró en el archivo Manifiesto, con el nombre correcto.

Mi problema era que no tenía que importar una biblioteca de terceros en una carpeta “libs”, y necesitaba referencias en mi proyecto (clic con el botón derecho, propiedades, ruta de comstackción de Java, bibliotecas, agregar tarro …).

Esto puede suceder si su clase de actividad está dentro de un paquete predeterminado. Lo arreglé moviendo la clase de actividad a un nuevo paquete. y cambiando el manifest.xml

antes de

 activity android:name=".MainActivity" 

después

 activity android:name="new_package.MainActivity" 

Esto me pasa con bastante frecuencia cuando uso el NDK. Descubrí que es necesario hacer un “Limpiar” en Eclipse después de cada vez que hago un ndk-build . Espero que ayude a alguien 🙂

Este error también se produce cuando usa ActionBarActivity pero se le asigna un estilo que no es AppCompat .

Para solucionarlo, simplemente establece el estilo de tus aplicaciones principal en un Theme.AppCompat como este:

   

Haga clic derecho en project> properties> android> y pruebe con otra versión de Android anterior que estaba haciendo con Android 4.4 luego cambié a Android 4.3 y funcionó!

Tuve el mismo problema (no se puede crear una instancia de la actividad):

PRIMER motivo:

Estaba accediendo

 Camera mCamera; Camera.Parameters params = mCamera.getParameters(); 

antes de

 mCamera = Camera.open(); 

Entonces, la forma correcta de hacerlo es abrir la cámara primero y luego acceder a los parámetros.

SEGUNDO motivo: declare su actividad en el archivo de manifiesto

  

TERCER motivo: declara el permiso de la cámara en tu archivo de manifiesto.

   

Espero que esto ayude

En mi caso, estaba tratando de insertar el SDK de Facebook y tenía una ID de aplicación incorrecta; por lo tanto, el error estaba apareciendo. En su archivo de manifiesto, debe tener los metadatos adecuados:

  

Si tiene instalado Android Studio 2.3.3 y Android Studio 3.0.0, el cambio entre los dos progtwigs para el desarrollo causará este error. Esto se debe a que existen situaciones en las que las clases soportadas en un progtwig no son compatibles con el otro y viceversa. Es importante mantener la coherencia con la versión de Android Studio que se está utilizando para desarrollar un proyecto.

Esto me sucedió cuando traté de ejecutar una Activity en 2.2 que usaba importaciones de Honeycomb no disponibles en versiones anteriores de Android y tampoco incluidas en el paquete de soporte v4.

Su nueva actividad agrega AndroidManifest.xml como ".NewActivity"

    

Debe asegurarse de que todas las actividades de su aplicación estén definidas correctamente en el archivo AndroidManifest.xml.

Además, si comienzan con una ruta, asegúrese de que exista esta ruta.

Por ejemplo, esto no funcionará:

  

Si el nombre de su aplicación es com.example.networkusage (tenga en cuenta que falta .android).

O mejor aún, no incluya rutas al definir una actividad dentro del manifiesto. Solo ponle su nombre (con un punto al frente).

  

es posible que tenga algunos errores en sus campos, como

 public class Search_costumer extends Activity { // you may have some errors like this int x =3/0; // I have error in initializing this variable too MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } 

así que mi consejo es realizar toda la inicialización en el método onCreate no directamente en sus campos

resolver de esa manera

 public class Search_costumer extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // you may have some errors like this int x =3/0; // I have error in initializing this variable too MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener(); } } 

Esto también puede suceder si tiene dos proyectos con el mismo nombre de paquete y ejecutó uno de ellos antes que el otro, así que supongo que confunde a Eclipse. Para mí, esto sucedió cuando copié un tutorial de Android en eclipse en el mismo espacio de trabajo y dejé los nombres de los paquetes iguales, pero agregué el ActionBarSherlock (ABS), por ejemplo

  package="com.example.android.whatever" 

Por lo tanto, en mi archivo AndroidManifest.xml, tanto el proyecto de tutorial que estaba en mi espacio de trabajo como el proyecto de tutorial copiado tenían como cadena de paquete:

  

Simplemente cambie el nombre del paquete refactorizando (En eclipse, haga clic derecho en el paquete en la pestaña Explorador de paquetes> seleccione Refractor> seleccione Cambiar nombre …) y luego cámbielo en su archivo AndroidManifest.xml y en cualquier otro lugar que necesite (por ejemplo, como todos sus archivos .java)

Además, si está recuperando algo de la intent de otra actividad usando getIntent en la actividad actual y configurando los datos recuperados antes / arriba en onCreate entonces se lanza esta excepción.

Por ej. si recupero una cadena como esta

 final String slot1 = getIntent().getExtras().getString("Slot1"); 

y coloque esta línea de código antes / arriba en onCreate entonces se lanza esta excepción.