2017-07-17 29 views
0

這裏是我的層次適配器的觀點不恢復。位置數據分別被列出和映射。選擇一個位置將替換contentFrame片段與位置數據的詳細信息。ViewPager:</p> <pre><code>CoordinatorLayout - AppBarLayout - CollapsingToolbarLayout - NestedScrollView - FrameLayout (contentFrame) - Container Fragment - ViewPager - Recycler(List) Fragment - Map Fragment - TabLayout </code></pre> <p>容器片段顯示兩個片段的一個標籤式界面:列表和地圖回去當

所有這一切都很好,直到我點擊後退按鈕,返回到容器片段:應該由適配器所提供的意見沒有恢復,只有選項卡顯示在屏幕上。我嘗試過每個片段的生命週期,並閱讀文檔,直到我的眼睛已經越過。這可能是什麼原因呢?

+0

這一切都在一個活動?我的直覺反應是當你的「annbriar golf course」片段顯示時(片段的實例狀態只有在保存活動的實例狀態時才保證保存),你的「按區域」片段的狀態會丟失。但是,當然,如果沒有看到代碼,肯定很難知道。 –

+0

@BenP。是的 - 這一切都在一個活動中,使用contentFrame FrameLayout中顯示的片段。 mFragmentManager.beginTransaction() .replace(R.id.contentFrame,fragment) .addToBackStack(null) .commit(); –

+0

您可以從屏幕標題和TabLayout中看到您的交易已成功從背面堆疊中彈出,這導致我認爲問題在於ViewPager的設置方式。也許有一些初始化代碼只能在第一次運行? –

回答

1

如果您在片段中顯示片段,則應該使用子片段管理器。所以,你應該用孩子的片段經理爲您viewpager:中

getChildFragmentManager() 

代替

getFragmentManager() 

要那樣做?很難知道沒有代碼。

但聽起來像它可能是你的問題

+1

啊哈!這肯定與它有關。我正在使用getActivity()。getSupportFragmentManager()。我改變了getChildFragmentManager(),現在當我點擊後,它在Map片段的onCreateView方法中崩潰,但它似乎讓我朝着正確的方向移動。 –

相關問題