我无法获取指向Fragment的指针,Fragment是FragmentTabhost中当前可见的片段。
我有SherlockFragmentActivity
名为SecondActivity
,可以从onCreate
方法加载Tabhost,如下所示:
if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
Fragment f = new TabsFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, f, "tabsfragment").commit();
}
TabsFragment
是一个SherlockFragment
子类,使用此onCreate
方法创建标签
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mTabHost = new FragmentTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.tabs);
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Offers",
getResources().getDrawable(R.drawable.offersale)),
OfferListFragment.class,
null);
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("News",
getResources().getDrawable(R.drawable.newspaper)),
NewsFragment.class,
null);
return mTabHost;
}
现在当我进入第二个标签时,我在一个由原始活动SecondActivity
启动的类中完成了后台任务,然后我调用它,这应该给我一个对标签的引用,但它总是返回null!
NewsFragment newsView = (NewsFragment) delegate.getSupportFragmentManager().findFragmentByTag("Tab2");
delegate
变量是启动后台类时返回SecondActivity
的指针。
如何获取指向标签片段的指针?
添加标签时设置的“Tab2”是否为片段的Tag
错误?
答案 0 :(得分:19)
我真的不喜欢回答我自己的问题,但是睡在它上面的东西真的很棒。 这个怪物给了我一个指向tabhost中片段的指针
NewsFragment newsView = (NewsFragment) delegate
.getSupportFragmentManager()
.findFragmentByTag("tabsfragment")
.getChildFragmentManager()
.findFragmentByTag("Tab2");