ViewPager mit einer Seite, die mehrere Fragmente enthält “java.lang.IllegalArgumentException: Keine Ansicht für ID gefunden”

In meiner kleinen Android App habe ich eineViewPager Bei 3 Seiten enthält jede Seite ein FragmentFragmentStatePagerAdapter (sehenfrühere Frage).

Für größere Bildschirme möchte ich jetzt eine behaltenViewPager, aber ich möchte, dass sich die ersten beiden Fragmente auf derselben ersten Seite befinden.

Dafür implementiere ich meinen eigenen PagerAdapter und dies funktioniert meistens. Das einzige Problem, das ich zu lösen versuche, ist, wenn ich den Bildschirm drehe, bekomme ich eine Fehlermeldung:

12-11 16:34:13.526: ERROR/AndroidRuntime(9221): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.matthieu/com.matthieu.TestActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f030002 (com.matthieu:id/top_fragment) for fragment TestFragment{481a3a98 #0 id=0x7f030002}
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815)
        at android.app.ActivityThread.access$2400(ActivityThread.java:125)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4627)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:521)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f030002 (com.matthieu:id/top_fragment) for fragment TestFragment{481a3a98 #0 id=0x7f030002}
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
        at android.app.Activity.performStart(Activity.java:3781)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
        ... 12 more

Ich habe einen Beispielcode eingefügt, der simuliert, was ich zu tun versuche (und diese Fehlermeldung anzeigt)GitHub.

Ich schätze, ein Problem, das ich habe, liegt an den Fragmenten, die ich in der realen Anwendung habe und die ich nicht wirklich haben kannstatic newInstance Konstruktor, aber stattdessen werden die Fragmente vorzeitig erstellt und haben 'setRetainInstance (true);' einstellen.

Ich verstehe die ID desviewGroup das wird das Fragment enthaltensollte Teil der Hierarchie seinund schließlich, denke ich, ist es ...

Wenn es einen Unterschied macht, verwende ich die Support-Bibliothek und die SherlockActionBar, um die Abwärtskompatibilität mit älteren Geräten aufrechtzuerhalten.

Haben Sie eine Idee, wie Sie vorgehen sollen?

BEARBEITEN: Ich habe festgestellt, dass, wenn ich die Fragmente aus derFragmentManager imonSaveInstanceState Ich bekomme keinen Absturz mehr. Alle Fragmente werden von Grund auf neu erstellt, was nicht das ist, was ich will, aber ich denke, ich muss dies möglicherweise tun und diese Fragmente später irgendwie wiederherstellen ...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage