在我小的Android應用程序,我有一個ViewPager
3個頁面,每個頁面包含一個片段,這是所有工作的罰款與FragmentStatePagerAdapter
(見earlier question)。ViewPager包含多個片段一頁「java.lang.IllegalArgumentException異常:未找到ID視圖」
現在對於大屏幕,我想保持一個ViewPager
,但我希望第一個兩個片段是相同的第一頁上。
對於這一點,我實現自己的PagerAdapter,這主要是工作,當我旋轉屏幕,我試圖解決的唯一的問題是,我得到一個錯誤:
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
我把樣品代碼中模擬什麼,我試圖做(並顯示此錯誤消息)上GitHub。我想我遇到的一個問題是因爲我在實際應用中存在的碎片,我實際上沒有static newInstance
的構造函數,但是提前創建碎片並且有'setRetainInstance(true);'組。
我明白了viewGroup
的ID將包含片段should be part of the hierarchy,最後,我想,這是...
如果這有什麼差別,我使用的是支持庫和SherlockActionBar保持向後兼容舊設備。
如何去這個任何想法?
編輯:我發現,如果我刪除onSaveInstanceState
從FragmentManager
的片段,我沒有得到任何崩潰了。所有片段從頭這不是我想要的重建,但我想我可能要做到這一點,不知何故後來恢復這些片段....
使用嵌套的片段我的解決辦法,我列出了幾個方法,幫助您解決原來的問題這裏:http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html – CommonsWare
@CommonsWare馬克,感謝您的關注:)我實際上閱讀過這篇博文。我認爲只有第二種方法可行,因爲我將頁面水平分割。我將再次閱讀該頁面,看看我是否可以從那裏選擇一些想法。 – Matthieu
@CommonsWare這些不同的方法都不起作用。最接近的一個是第二個,但它不包括頁面中的碎片,只包含簡單的小部件...我嘗試了所有我能做的並且用盡想法。除非有人真的有一些好主意,否則我不得不以另一種方式解決這個問題。 – Matthieu