1

さて、Android アプリケーションを取得しましたが、「アクティビティ ComponentInfo{} をインスタンス化できません」というエラーが表示されて起動しません。基本的に、マニフェスト ファイルに問題があり、アプリケーションが最初のアクティビティを起動できません。私は新しいが本質的に複製されたプロジェクトを作成しました (メイン、2 番目と 3 番目の「テスター」アクティビティ、そしてもちろん文字列の Java + XML コードを手動でコピーしました)。新しいプロジェクトのマニフェストはそのまま残しましたが、テスター用のアクティビティ行を追加しました。基本的にすべてを在庫として欲しかったので、何も問題が発生せず、何も問題がなく、アプリケーションがエミュレーターにロードされ、私の電話は問題ありませんでした。

そのため、新しいマニフェストを古いプロジェクトにコピーして、それを「デフォルト」に設定し、他の 3 つのアクティビティのために、既にそこにあり、機能していたテスター アクティビティ コードをコピーして貼り付けました。突然、それは働きたくありません。すべてがそこにありますが、何が問題ですか?(アイコン ドローアブルが変更されていることに注意してください。ただし、それとは関係ありません)。すべてのアクティビティ名は、パッケージ名などと一致します。これはバグでしょうか?私は正直なところ、何も悪いことを見つけることができません。

重複した (+ 動作中の) コード

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/logo3"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.ollygrov.bakerspride.Main"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Cal"
        android:label="@string/title_activity_cal" >
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Breads"
        android:label="@string/title_activity_breads" >
    </activity>
</application>

古い (+ 動作しない) コード

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.ollygrov.bakerspride.Main"
        android:label="@string/app_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Cal"
        android:label="@string/title_activity_cal" >
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Breads"
        android:label="@string/title_activity_breads" >
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Gal"
        android:label="@string/title_activity_gal" >
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Tut"
        android:label="@string/title_activity_tut" >
    </activity>
    <activity
        android:name="com.ollygrov.bakerspride.Rec"
        android:label="@string/title_activity_rec" >
    </activity>
 </application>

編集: コードをコピーして Chrome の検索バーに貼り付けたところ (droid:icon と droid:label を変更して適合させる)、それらはまったく同じです!! 何?!6 アクティビティなどを行うことは許可されていませんか?

エラー:

09-04 11:33:04.895: E/AndroidRuntime(717): FATAL EXCEPTION: main
09-04 11:33:04.895: E/AndroidRuntime(717): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ollygrov.bakerspride/com.ollygrov.bakerspride.Main}: java.lang.NullPointerException
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.os.Looper.loop(Looper.java:137)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread.main(ActivityThread.java:4745)
09-04 11:33:04.895: E/AndroidRuntime(717):  at java.lang.reflect.Method.invokeNative(Native Method)
09-04 11:33:04.895: E/AndroidRuntime(717):  at java.lang.reflect.Method.invoke(Method.java:511)
09-04 11:33:04.895: E/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-04 11:33:04.895: E/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-04 11:33:04.895: E/AndroidRuntime(717):  at dalvik.system.NativeStart.main(Native Method)
09-04 11:33:04.895: E/AndroidRuntime(717): Caused by: java.lang.NullPointerException
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.Activity.findViewById(Activity.java:1825)
09-04 11:33:04.895: E/AndroidRuntime(717):  at com.ollygrov.bakerspride.Main.<init>(Main.java:19)
09-04 11:33:04.895: E/AndroidRuntime(717):  at java.lang.Class.newInstanceImpl(Native Method)
09-04 11:33:04.895: E/AndroidRuntime(717):  at java.lang.Class.newInstance(Class.java:1319)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
09-04 11:33:04.895: E/AndroidRuntime(717):  ... 11 more
09-04 11:34:58.665: E/Trace(765): error opening trace file: No such file or directory (2)
09-04 11:34:59.095: D/AndroidRuntime(765): Shutting down VM
09-04 11:34:59.095: W/dalvikvm(765): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-04 11:34:59.114: E/AndroidRuntime(765): FATAL EXCEPTION: main
09-04 11:34:59.114: E/AndroidRuntime(765): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.ollygrov.bakerspride/com.ollygrov.bakerspride.Main}: java.lang.NullPointerException
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.os.Looper.loop(Looper.java:137)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread.main(ActivityThread.java:4745)
09-04 11:34:59.114: E/AndroidRuntime(765):  at java.lang.reflect.Method.invokeNative(Native Method)
09-04 11:34:59.114: E/AndroidRuntime(765):  at java.lang.reflect.Method.invoke(Method.java:511)
09-04 11:34:59.114: E/AndroidRuntime(765):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-04 11:34:59.114: E/AndroidRuntime(765):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-04 11:34:59.114: E/AndroidRuntime(765):  at dalvik.system.NativeStart.main(Native Method)
09-04 11:34:59.114: E/AndroidRuntime(765): Caused by: java.lang.NullPointerException
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.Activity.findViewById(Activity.java:1825)
09-04 11:34:59.114: E/AndroidRuntime(765):  at com.ollygrov.bakerspride.Main.<init>(Main.java:19)
09-04 11:34:59.114: E/AndroidRuntime(765):  at java.lang.Class.newInstanceImpl(Native Method)
09-04 11:34:59.114: E/AndroidRuntime(765):  at java.lang.Class.newInstance(Class.java:1319)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
09-04 11:34:59.114: E/AndroidRuntime(765):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
4

1 に答える 1

1

問題はあなたのMainコンストラクタです:

09-04 11:33:04.895: E/AndroidRuntime(717): Caused by: java.lang.NullPointerException
09-04 11:33:04.895: E/AndroidRuntime(717):  at android.app.Activity.findViewById(Activity.java:1825)
09-04 11:33:04.895: E/AndroidRuntime(717):  at com.ollygrov.bakerspride.Main.<init>(Main.java:19)

19行目で、明らかに機能しないMain.java呼び出しを試みています。findViewById()コンストラクターでそのようなコードを呼び出すのは早い方法です。私の最善の推測は、すべてをcronstructorからonCreate()Activityに移動する必要があるということです。

通常、アクティビティまたはフラグメントにカスタム コンストラクターは必要ありません。

于 2013-09-05T10:50:17.393 に答える