我有一个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