Gespeicherte Ausnahme

Ich bekomme die folgende Ausnahme mit meiner App. Ich glaube, das passiert, wenn der Benutzer die App für eine lange Zeit verlässt und dann zurückkehrt. Ich bin nicht in der Lage, es zu replizieren, aber es zeigt sich in meinem Crash-Logs viel. Ich habe keine Ahnung, warum dies geschieht, so dass alle Vorschläge sehr geschätzt werden.

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 

Zeile 235 ist die folgende:

  • OnLocationChanged nicht auf einige Geräte aufgerufen
  • Entfernen von Leerzeichen aus String
  • Wie kann ich verhindern, dass Android Activity kurz in den Portrait-Modus gelangt, wenn ich die Landschaft angegeben habe?
  • Android, wie man Zugriff auf rohe Ressourcen, die ich in res Ordner?
  • Android Canvas.drawTextOnPath sieht nicht richtig aus, wenn die Farbe auf Stroke gesetzt ist
  • Typ Umwandlung von C nach Java
  •  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // line 235 

    Mein onSaveInstanceState () ist ganz einfach:

     @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); } 

  • Wie kann ich reparieren, was das verursacht, um diese Logcat zu überfluten: I / System.out: (HTTPLog) -Static: isSBSettingEnabled false
  • Quelle von Android's Lock Screen
  • Handle Screen Rotation ohne Datenverlust - Android
  • Android-Themen: Definieren Sie Farben / Farbverläufe in "baseTheme.xml", verwenden Sie innerhalb von Steuerelementen, überschreiben Sie in "subThemeX.xml"
  • JQuery Mobile Icons weiß statt schwarz auf Android
  • CSS / HTML - dp (Dichte unabhängige) Einheiten?
  • 3 Solutions collect form web for “Gespeicherte Ausnahme”

    Ich lief in dieses gleiche Problem, ich glaube es ein Bug mit Android. Werfen Sie einen Blick auf diesen Thread für eine mögliche Lösung http://code.google.com/p/android/issues/detail?id=22404

    Ich habe genau das gleiche Problem, ich folgte dem Rat in Kennys Link:

    Ich habe folgendes verwendet:

     FragmentManager.enableDebugLogging(true); 

    Dies wird in den Protokollen alle Anrufe auf dem FragmentManager (Fragmente hinzugefügt, gelöscht, versteckt etc.) angezeigt.

    Es erlaubte mir zu sehen, was in meinem Fall falsch war, einer der Fragmente in meiner App wurde manchmal nicht richtig gespeichert in der Instanz und sein Inhalt war null.

    Dann ist der Absturz mit dem gleichen Fehlerprotokoll passiert, als die App versucht, dieses Null-Fragment aus der Instanz wiederherzustellen.

    In meinem Fall war dieses Fragment ein wenig Besonderes und wurde automatisch erstellt. Um den Fehler nicht wieder zu bekommen, habe ich das Fragment aus dem FragmentManager bevor ich die Activity .

    Ich hatte das gleiche Problem, das bei Orientierungsänderungen auftritt, aber es ist nur bei älteren Android-Versionen (4.0.4) passiert, neuere Versionen wie 4.4.2 waren in Ordnung. Ich möchte mit Ihnen teilen, wie ich es behoben habe.

    Wie Kenny und Yoann vorgeschlagen haben, habe ich es benutzt

     FragmentManager.enableDebugLogging(true); 

    Und fand heraus, dass zu viel Entfernung wurde getan. Ich musste ft.remove(df) aus meinem Code entfernen und jetzt ist es gut mit beiden Versionen oben erwähnt. Das ist mein Code:

     if (savedInstanceState != null) { final FragmentTransaction ft = getFragmentManager().beginTransaction(); final DialogFragment df = (DialogFragment) getFragmentManager().findFragmentByTag("tag"); if (df != null) { df.dismiss(); // ft.remove(df); frag = new MyDialogFragment(); frag.show(getFragmentManager(), "tag"); } ft.addToBackStack(null); ft.commit(); } 

    Aus Gründen der Vollständigkeit ist das, was ich in onSaveInstanceState(final Bundle outstate) :

     if (frag != null) { getFragmentManager().putFragment(outState, "tag", frag); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.