Java.Lang.RuntimeException auflösen: Activity ComponentInfo kann nicht instanziiert werden

Mehvish Ashiq 12 Oktober 2023
Java.Lang.RuntimeException auflösen: Activity ComponentInfo kann nicht instanziiert werden

Heute werden wir etwas über eine weitere Laufzeitausnahme erfahren, die besagt: Unable to instantiate activity ComponentInfo.

Wir werden verschiedene mögliche Gründe untersuchen, die zu java.lang.RuntimeException: Unable to instantiate activity ComponentInfo führen. Endlich haben wir eine Lösung, um es zu beseitigen.

Beheben Sie den Fehler java.lang.RuntimeException: Unable to instantiate activity ComponentInfo

Beispielcode zur Fehlerdemonstration (Datei 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
}

Beispielcode (Datei 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>

Wenn wir versuchen, dies auszuführen, während wir eine Anwendung im Android-Emulator starten, erhalten wir die Fehlermeldung java.lang.RuntimeException: Unable to instantiate activity ComponentInfo.

Es gibt einige mögliche Ursachen, die wir berücksichtigen müssen, um dies zu beheben. Alle von ihnen sind unten aufgeführt.

  • Stellen Sie sicher, dass Ihre Aktivität zur Datei AndroidManifest.xml hinzugefügt wird. Warum ist es notwendig?

    Denn wann immer wir eine neue Aktivität erstellen wollen, müssen wir uns in unserer AndroidManifest.xml-Datei registrieren. Überprüfen Sie außerdem alle Zugriffsmodifikatoren.

  • Wir erhalten diesen Fehler auch, wenn wir versuchen, vor onCreate() anzuzeigen, was falsch ist und zu einem Fehler führt, der besagt, dass der Informationsfehler der Aktivitätskomponente nicht instanziiert werden kann.

  • Ein weiterer Grund für java.lang.RuntimeException: Unable to instantiate activity ComponentInfo ist, dass wir unsere Activity in AndroidManifest.xml hinzugefügt haben, die als abstract deklariert ist. Mit anderen Worten, wir können sagen, dass die Aktivität, auf die wir zugreifen möchten, als abstrakt deklariert ist.

  • Stellen Sie sicher, dass uns kein vorangestellter Punkt vor einem Aktivitätspfad fehlt (diese Sache verursacht einen Fehler im oben angegebenen Beispielcode).

  • Wir müssen uns auch diesem Fehler stellen, wenn wir unsere Datei MainActivity.java nicht als öffentlich deklariert haben. Überprüfen Sie auch, ob sich Ihre Datei im richtigen Paket befindet oder nicht.

Jetzt kennen wir alle möglichen Gründe. Wie können wir es beheben?

Siehe folgende Lösung.

Beispielcode für Lösung (Datei 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
}

Beispielcode (Datei 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>

Wir haben vor einem Aktivitätspfad einen vorangestellten Punkt hinzugefügt. Wir bestätigen auch, dass unsere Datei MainActivity.java als öffentlich deklariert ist und wir nicht versuchen, auf eine als abstrakt deklarierte Aktivität zuzugreifen.

Achten Sie auf alle als Ursachen angegebenen Punkte, da diese Punkte tatsächliche Lösungen sind, wenn wir sie berücksichtigen.

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

Verwandter Artikel - Java Error