我在FragmentActivity中添加了 FragmentTabHost - mTabHost 标签:
mTabHost.addTab(mTabHost.newTabSpec("visit").setIndicator("Visit"), VisitTabFragment.class, bundle);
但我需要引用我的TabFragment。我找到了一个部分解决方案,我可以设置我的
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
if (fragment instanceof VisitTabFragment)
visitTabFragment = (VisitTabFragment) fragment;
...
}
但仅当我点击我的标签时它才有效。我也试过了:
getSupportFragmentManager().findFragmentByTag(tag);
但它给了我NullPointerException(可能它还不存在)。
有没有办法先创建片段,然后将其添加到tabhost?
答案 0 :(得分:0)
您应该在向其添加标签之前设置您的tabhost:
mTabHost.setup(this, getSupportFragmentManager(), R.id.tabContent);
供参考,可以使用 sinleton模式 :
public class VisitTabFragment extends Fragment {
private static VisitTabFragment uniqInstance;
private VisitTabFragment() {
}
public static VisitTabFragment getInstance() {
if (uniqInstance == null) {
uniqInstance = new VisitTabFragment();
}
return uniqInstance;
}
.........
}
如果您想访问您的片段,请致电:
VisitTabFragment.getInstance();
在您的情况下致电:
mTabHost.addTab(mTabHost.newTabSpec("visit").setIndicator("Visit"), VisitTabFragment.getInstance().getClass(), bundle);