繁体   English   中英

我可以使用 <fragment> 标签来布置作为ActionBarSherlock TabsPager一部分的片段?

[英]Can I use a <fragment> tag to lay out a fragment that is part of an ActionBarSherlock TabsPager?

我有一个多片段ABS片段活动,其中的选项卡和一个ViewPager都运行良好,但是对于我的应用程序的实际功能,我需要能够掌握这些片段并与它们进行通信。 为了能够调用findFragmentById(),这些片段需要ID,如果我理解正确的话,这些ID要求它们具有<fragment >标记或由FragmentTransaction创建。 我正在使用的TabsAdapter / ViewPager代码使用Fragment.instantiate()从Fragment类创建片段,该片段不允许设置ID。

那么,关于如何在ViewPager中使用标签或使用FragmentTransaction创建标签片段的任何想法? 我可以很容易地在TabsAdapter中实现自己的ID /片段映射,但是如果可以的话,我宁愿使用标准机制。

FragmentPagerAdapter使用称为makeFragmentName的私有方法标记它包含的所有Fragment-tab。

这是一个脆弱的解决方案,但将从ABS 4.0.2开始使用。 您需要知道要查找的片段的位置索引

老实说,您应该只使用自己的,比较不易损坏的解决方案。 至少那么您将控制何时/如何中断。

public Fragment getFragmentByPosition(ViewPager container, int position) {
    String name = makeFragmentName(container.getId(), position);
    return  mFragmentManager.findFragmentByTag(name);
}

//WARNING: this will break if ABS changes this method.
private static String makeFragmentName(int viewId, int index) {
    return "android:switcher:" + viewId + ":" + index;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM