1

Activityのインスタンスの作成中に、InstantiationExceptionのスタックトレースを受け取りました。ログにnewInstance failed: no <init>()メッセージがあります

状況は非常に明確です。VMはデフォルトのパラメーターなしコンストラクターを見つけることができません。これはこのスレッドで説明されています

私の調査によると、人々は通常、アクティビティのコンストラクターにパラメーターを追加するときにこれを受け取りますが、これは間違いなく悪いことです。しかし、これは私たちの場合ではありません-私たちは常にデフォルトのコンストラクターにアクセスできます。その例外の別の理由は、一部のメンバーの初期化中の別の例外である可能性があります(初期化はデフォルトのコンストラクターで実行されますよね?)-しかし、これも行いません。すべてのメンバーはonCreate()メソッドで初期化されます。

いくつかの詳細(名前が変更されました):アクティビティがAndroidManifest.xmlに追加されました:

<manifest
    package="app.name"
    ....>
    ....
    <activity
        android:name="app.name.activity.OurActivity"
        android:label="@string/NAME">
    </activity>

インテントを作成する方法は奇妙に見えるかもしれませんが、すべての場合に機能します。

Context packageContext = layoutInflater.getContext().createPackageContext("app.name", 0);
Intent intent = new Intent(packageContext, OurActivity.class);
...startActivity(intent);

これは問題になる可能性があると思いますが、1)これは数か月間正常に機能します2)同じクライアントが別のアクティビティで同じ例外を受け取りました。これはコンテキストとしてアクティビティを使用し始めます。

例外を再現して理解/修正することはできません。しかし、どういうわけか私たちのクライアントの1人がそれを手に入れました。彼はDroidERIS(Verizon)デバイスを持っています

何かご意見は?VMがデフォルトのコンストラクターを見つけられない時期がわからない場合はありますか?

4

0 に答える 0