1

在我的程序後不恢復,我有以下層次:片段定向變化

Activity 
    Fragment 
     ViewPager + FragmentStatePagerAdapter 
      Fragment containing video 

正在使用setRetainInstance(真)初始化該活動立即嵌套的片段。無論何時切換方向,都會導致崩潰。使用了錯誤報告中描述的解決方案:https://code.google.com/p/android/issues/detail?id=42601#c10

不過,每當我切換方向時,應用程序都會崩潰。我發現了另一個錯誤報告+解決方案:https://code.google.com/p/android/issues/detail?id=42601#c32

應用此解決方案後,我能夠旋轉設備,而不會崩潰應用程序。然而,深度嵌套的片段並未保留其狀態。由於此片段包含的視頻應該繼續播放,不管方向是否改變,這都是必備的。我在這裏發現了第三個錯誤報告,描述這是Android支持庫版本20中的一個已知問題:https://code.google.com/p/android/issues/detail?id=74222#c17

現在,似乎最深的碎片似乎保留了某種狀態。至少它不會被破壞,因爲視頻的音頻會在整個方向以及方向改變之後繼續播放。但是,方向更改後片段不會恢復。我只是看到一個白色的矩形,視頻應該在哪裏。

正如你所看到的,這變得荒謬可笑。我已經不得不使用三個hacky解決方案來解決ViewPager類中的錯誤,但它仍然無法正常工作。如果任何人有任何想法我可以嘗試,我會非常感激。

回答

0

最終,我沒有找到解決問題的辦法。我已經通過在父段中保留嵌套片段的狀態來解決這個問題,它確實保留了狀態。要做到這一點,我做了以下內容:

  • 添加一個HashMap父片段
  • 給了每一個片段,只要該片段是重新
  • 創建一個狀態對象爲所有可以恢復一個唯一的ID字符串在他們的onCreate方法中嵌套片段並將其添加到父片段中的HashMap中。或者,如果((ParentFragment)getParentFragment())。stateMap.contains(id),則恢復現有狀態。
  • 將嵌套片段的所有成員變量移動到StateObjects