我有一個ViewPager + FragmentStatePagerAdapter我的主機活動這讓我刷卡通過一組片段(同一ItemFragment類的不同實例),並用於填充每個片段的數據是從網上下載的。FragmentStatePagerAdapter /更新操作欄標題
現在,當我刷我想更新與屬性從當前片段來讓我用OnPageChangeListener /使用onPageSelected做這項工作的操作欄標題:
...
@Override
public void onPageSelected(int position) {
MyFragment currentFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.view_pager);
getSupportActionBar().setTitle(currentFragment.propertyIWantToUseAsTitle);
}
...
我有幾個在這裏的疑惑:
- 我在獲取真實的當前片段?該FragmentStatePageAdapter不設置每個片段的標籤,所以我不知道任何其他方式來獲得當前的片段,而不是使用的ViewGroup容器
- 被調用時使用onPageSelected,添加的片段可以仍獲取我需要將數據設置導致n的操作欄標題。
在上述場景中,更新操作欄標題的邏輯最好的地方是什麼?
ps。當我需要的數據可用時,我嘗試了添加到MyFragment的混合方法來更新ab。問題在於,在碎片完成加載時,操作欄標題不斷變化,因此很少有碎片被加載。結果是ab標題是來自前幾頁的片段的隨機標題。
在此先感謝您的幫助!
「我在檢索真正的當前片段嗎?」 - 也許現在,但你依賴於'ViewPager'實現細節,這是有風險的。 「FragmentStatePageAdapter不會爲每個片段設置標籤」 - 您僅限於使用「FragmentStatePagerAdapter」嗎? 「在上述場景中保持更新操作欄標題的邏輯的最佳位置是什麼?」 - 是的,我真的需要爲此制定解決方案。它現在正式在我的待辦事項清單上。 – CommonsWare 2013-05-08 22:04:59
謝謝@CommonsWare,我只是讓它工作,但我關心內存使用情況。就拿這裏看看https://gist.github.com/gwvatieri/5544164 – gwa 2013-05-08 22:28:49