Java.Lang.RuntimeException を解決: アクティビティ ComponentInfo をインスタンス化できません

Mehvish Ashiq 2023年10月12日
Java.Lang.RuntimeException を解決: アクティビティ ComponentInfo をインスタンス化できません

今日は、アクティビティ ComponentInfo をインスタンス化できませんという別の 実行時例外 について学習します。

java.lang.RuntimeException: アクティビティ ComponentInfo をインスタンス化できません が発生するさまざまな理由を探ります。 最後に、それを根絶するための解決策があります。

java.lang.RuntimeException: アクティビティ ComponentInfo をインスタンス化できません エラーを解決する

エラー デモンストレーションのコード例 (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
}

コード例 (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>

Android エミュレーターでアプリケーションを起動しているときにこれを実行しようとすると、java.lang.RuntimeException: アクティビティ ComponentInfo をインスタンス化できませんというエラーが表示されます。

これを解決するために考慮しなければならない原因がいくつか考えられます。 それらのすべてを以下にリストします。

  • ActivityAndroidManifest.xml ファイルに追加されていることを確認します。 なぜそれが必要なのですか?

    これは、新しい Activity を作成するたびに、AndroidManifest.xml ファイルに登録する必要があるためです。 また、すべてのアクセス修飾子を確認してください。

  • onCreate() の前に表示しようとしたときにもこのエラーが発生しますが、これは正しくなく、アクティビティ コンポーネント情報をインスタンス化できないというエラーが発生します。

  • java.lang.RuntimeException: Unable to instantiate activity ComponentInfo が発生するもう 1つの理由は、abstract として宣言されている AndroidManifest.xmlActivity を追加したことです。 つまり、アクセスしようとしている Activityabstract と宣言されていると言えます。

  • アクティビティ パスの前にあるドットが欠落していないことを確認してください (これにより、上記のコード例でエラーが発生しています)。

  • MainActivity.java ファイルを public として宣言しなかった場合にも、このエラーに直面する必要があります。 また、ファイルが正しいパッケージにあるかどうかを確認してください。

これで、考えられるすべての理由がわかりました。 どうすれば修正できますか?

次の解決策を参照してください。

ソリューションのコード例 (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
}

コード例 (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>

アクティビティ パスの前にドットを追加しました。 また、MainActivity.java ファイルが public として宣言されていること、および abstract として宣言されている Activity にアクセスしようとしていないことも確認します。

原因として挙げられているすべての点に注意してください。これらの点は、考えれば実際の解決策です。

著者: Mehvish Ashiq
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

関連記事 - Java Error