2016-08-17 57 views
0

我使用FragmentStatePagerAdapter在具有相同佈局的片段之間導航。在片段的onActivityCreated()中,我將活動的操作欄設置爲當前片段的工具欄。問題在於viewpager預加載了片段,因爲屏幕外頁面限制設置爲2,這使除最後的setSupportActionBar()調用之外的所有調用都無效。任何幫助?Android FragmentStatePagerAdapter setSupportActionBar()

我知道我可以保留對當前所有活動頁面的引用,並且在onPageSelected()中調用setSupportActionBar()。但這被認爲是一種不好的做法,對吧?

更新:剛剛確認,即使使用WeakReference,碎片仍然不會被釋放。

回答

0

解決方法之一是使用setUserVisibleHint(boolean isVisibleToUser)片段的方法,並在那裏設置工具欄。

您也可以在ViewPager上附加OnPageChangeListener,並在選擇該頁面時更新工具欄。

+0

對於前一種解決方案,我在'onCreateView()'之前調用了'setUserVisibleHint()',我可以確認預加載的片段在用戶可見之前也會調用'onCreateView()'。片段首先調用的順序是不可預知的。對於第二種解決方案,干擾片段管理不是不好的方法嗎? – mljli