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 DateiAndroidManifest.xml
hinzugefügt wird. Warum ist es notwendig?Denn wann immer wir eine neue
Aktivität
erstellen wollen, müssen wir uns in unsererAndroidManifest.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 unsereActivity
inAndroidManifest.xml
hinzugefügt haben, die alsabstract
deklariert ist. Mit anderen Worten, wir können sagen, dass dieAktivität
, auf die wir zugreifen möchten, alsabstrakt
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.
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse