7

アプリで次の例外が発生します。これは、ユーザーがアプリを長時間離れてから戻ってきたときに発生すると思います。複製できませんが、クラッシュ ログに何度も表示されます。なぜこれが起こっているのかわからないので、どんな提案でも大歓迎です。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MyActivity}: java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
at android.app.ActivityThread.access$600(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4974)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at java.util.ArrayList.get(ArrayList.java:306)
at android.support.v4.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1764)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:198)
at com.myapp.MyActivity.onCreate(MyActivity.java:235)
at android.app.Activity.performCreate(Activity.java:4538)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158)
... 11 more

235 行目は次のとおりです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    // line 235

私の onSaveInstanceState() はとてもシンプルです:

@Override
public void onSaveInstanceState(Bundle state) {
    super.onSaveInstanceState(state);

    state.putInt("id1", id1);
    state.putInt("id2", id2);
    state.putInt("id3", id3);
    state.putInt("id4", id4);

}
4

3 に答える 3

4

私はこれと同じ問題に遭遇しました.Androidのバグだと思います. 考えられる解決策については、このスレッドをご覧ください http://code.google.com/p/android/issues/detail?id=22404

于 2012-09-25T20:24:29.873 に答える
2

まったく同じ問題が発生しました。ケニーのリンクにあるアドバイスに従いました。

私は以下を使用しました:

FragmentManager.enableDebugLogging(true);

これにより、ログにすべての呼び出しが表示されますFragmentManager(フラグメントの追加、削除、非表示など)。

私の場合、何が問題なのかを確認することができました。アプリのフラグメントの 1 つがインスタンスに適切に保存されず、そのコンテンツが null であることがありました。

その後、アプリがこの null フラグメントをインスタンスから復元しようとしたときに、同じエラー ログでクラッシュが発生しました。

私の場合、このフラグメントは少し特殊で、自動的に作成されました。再度エラーが発生しないようにするために、 をFragmentManager終了する前に からフラグメントを削除しましたActivity

于 2014-05-16T12:36:45.667 に答える