我正在关注这个库示例并使用这个库在 ViewPager 中创建选项卡并向它们添加片段。
虽然我能够创建选项卡,但我无法将片段附加到它们。有什么帮助吗?
编辑:
我的标签活动看起来像这样:
public class TabActivity extends SherlockFragmentActivity implements StreamFragment.onStreamSelectedListener{
TabHost mTabHost;
TabManager mTabManager;
Bundle bundle = new Bundle();
Home f1;
static FragmentTransaction ft;
static View v;
public static String currentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
bundle.putString("stream","sourceId");
mTabManager = new TabManager(this, mTabHost, R.id.realtabcontent);
mTabManager.addTab(mTabHost.newTabSpec("home").setIndicator("Home"),
Home.class, null);
mTabManager.addTab(mTabHost.newTabSpec("streams").setIndicator("Streams"),
StreamFragment.class, null);
mTabManager.addTab(mTabHost.newTabSpec("source").setIndicator("Source"),
SourceFragment.class, bundle);
f1 = (Home) getSupportFragmentManager().findFragmentByTag("home");
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
}
声明了一个负责选项卡切换的 tabmanager 和一个有助于在选项卡之间连接的 onStreamSelectedListener。
现在,当我尝试使用它来实现时:
对于在视图中加载片段的位置以及如何在它们之间进行通信,我有点困惑。
我试着做这样的事情:
@Override
public Fragment getItem(int position) {
if(position == 1)
return(Home.newInstance(position));
else if (position == 2)
return(StreamFragment.newInstance(position));
....
}
但我不确定这是否是正确的做法。有什么帮助吗?