Resolver Java.Lang.RuntimeException: No se puede crear una instancia de Activity ComponentInfo

Mehvish Ashiq 12 octubre 2023
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 archivo AndroidManifest.xml. ¿Por qué es necesario?

    Se debe a que siempre que queramos realizar una nueva Actividad, debemos registrarnos en nuestro fichero AndroidManifest.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 la Actividad a la que intentamos acceder se declara abstracta.

  • 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 como pú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.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - Java Error