java.lang.IllegalStateException: Fragment bereits hinzugefügt

Ich habe ein Problem mit einer Android-App, die mit dem Ziel-SDK 4.3 kompiliert wurde und ausgeführt wird. Die App verfügt über zwei Aktivitäten, eine MainActivity (Hauptaktivität) und eine SecondActivity (Zweitaktivität). Beide verwenden Fragmente. Um auch ältere Geräte zu unterstützen, wird die support lib verwendet.

Im folgenden Szenario kommt es zum Fehler "IllegalStateException: Fragment bereits hinzugefügt".

1) Starten Sie die App -> MainActivity wird angezeigt
2) Wechseln Sie zu SecondActivity mit Absicht
3) Drücken Sie die Home-Taste
4) Warten Sie länger (getestet mit 24 Stunden)
5) Drücken Sie erneut das App-Symbol -> Ausnahme. Wenn die Zeit kürzer ist, wird die SecondActivity wie erwartet angezeigt.

Ich habe viele IllegalStateExceptions während der Fragmentbehandlung gelesen, aber alle wiesen auf ein Problem mit einer replace () -Methode hin. Im Stacktrace wird mein eigener Code niemals aufgerufen.

Das Fragement wird in der Activies onCreate () -Methode hinzugefügt:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(..);
    ListFragment listFragment = this.getCaptureListFragment();
    FragmentTransaction tx = this.getSupportFragmentManager().beginTransaction();
    tx.add(R.id.MainFragmentContainer, listFragment, "list_fragment_tag");
    tx.commit(); 
}

private ListFragment getListFragment() {
    ListFragment listFragment = (ListFragment) this.getSupportFragmentManager().findFragmentByTag("list_fragment_tag");
    if (listFragment == null) {
        listFragment = new ListFragment();
    }
    return listFragment;
}


java.lang.RuntimeException: Unable to start activity    ComponentInfo{de.myexample.demo/de.myexample.demo.ui.SecondActivity}: java.lang.IllegalStateException: Fragment already added: ListFragment{42283f58 #0 id=0x7f060094 de.myexample.demo.ui.ListFragment}
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Fragment already added: ListFragment{42283f58 #0 id=0x7f060094 de.myexample.demo.ui.ListFragment}
    at android.support.v4.app.FragmentManagerImpl.addFragment(SourceFile:1175)
    at android.support.v4.app.BackStackRecord.run(SourceFile:616)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:1460)
    at android.support.v4.app.FragmentActivity.onStart(SourceFile:556)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
    at android.app.Activity.performStart(Activity.java:5143)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
    ... 11 more
java.lang.IllegalStateException: Fragment already added: ListFragment{42283f58 #0 id=0x7f060094 de.myexample.demo.ui.ListFragment}
    at android.support.v4.app.FragmentManagerImpl.addFragment(SourceFile:1175)
    at android.support.v4.app.BackStackRecord.run(SourceFile:616)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(SourceFile:1460)
    at android.support.v4.app.FragmentActivity.onStart(SourceFile:556)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
    at android.app.Activity.performStart(Activity.java:5143)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage