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 ...