Resolver Java.Lang.RuntimeException: No se puede crear una instancia de Activity ComponentInfo
Hoy, aprenderemos sobre otra excepción de tiempo de ejecución que dice No se puede instanciar la actividad ComponentInfo
.
Exploraremos diferentes razones posibles que resultan en java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo
. Finalmente, tendremos una solución para erradicarlo.
Resuelva el error java.lang.RuntimeException: no se puede instanciar la actividad ComponentInfo
Código de ejemplo para demostración de error (archivo MainActivity.java
):
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// write your remaining code here
}
Código de ejemplo (archivo AndroidManifest.xml
):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.App"
tools:targetApi="31">
<activity
android:name="MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Cuando intentamos ejecutar esto mientras iniciamos una aplicación en el emulador de Android, obtenemos el error que dice java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo
.
Hay unas cuantas causas posibles que debemos tener en cuenta para solucionarlo. Todos ellos se enumeran a continuación.
-
Asegúrate de que tu
Actividad
esté añadida al archivoAndroidManifest.xml
. ¿Por qué es necesario?Se debe a que siempre que queramos realizar una nueva
Actividad
, debemos registrarnos en nuestro ficheroAndroidManifest.xml
. Además, verifique todos los modificadores de acceso. -
También recibimos este error cuando intentamos ver antes de
onCreate()
, que es incorrecto y da como resultado un error que indica que no se puede crear una instancia del error de información del componente de actividad. -
Otra razón para obtener “java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo” es que hemos agregado nuestra “Actividad” en
AndroidManifest.xml
, que se declara como “abstracto”. En otras palabras, podemos decir que laActividad
a la que intentamos acceder se declaraabstracta
. -
Asegúrese de que no falte un punto anterior antes de una ruta de actividad (esto está causando un error en el código de ejemplo anterior).
-
También tenemos que enfrentar este error si no declaramos nuestro archivo
MainActivity.java
comopúblico
. Además, verifique si su archivo está en el paquete correcto o no.
Ahora, conocemos todas las posibles razones. ¿Cómo podemos arreglarlo?
Consulte la siguiente solución.
Código de ejemplo para la solución (archivo MainActivity.java
):
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// write your remaining code here
}
Código de ejemplo (archivo AndroidManifest.xml
):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.app">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.App"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hemos agregado un punto anterior antes de una ruta de actividad. También confirmamos que nuestro archivo MainActivity.java
está declarado como público
, y no estamos tratando de acceder a una Actividad
declarada como abstracta
.
Tenga cuidado con todos los puntos dados como causas porque esos puntos son soluciones reales si los consideramos.
Artículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase