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ätzur DateiAndroidManifest.xmlhinzugefügt wird. Warum ist es notwendig?Denn wann immer wir eine neue
Aktivitäterstellen 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 ComponentInfoist, dass wir unsereActivityinAndroidManifest.xmlhinzugefügt haben, die alsabstractdeklariert ist. Mit anderen Worten, wir können sagen, dass dieAktivität, auf die wir zugreifen möchten, alsabstraktdeklariert 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.javanicht alsöffentlichdeklariert 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
