【发布时间】:2012-04-24 19:14:40
【问题描述】:
我正在使用ActionBarSherlock 并将this pattern 应用于我在android 开发者网站上找到的标签导航。它工作得很好,但我也希望能够在 NAVIGATION_MODE_TABS 和 NAVIGATION_MODE_LIST 之间切换,保留选项卡和片段之间的关联。
我上面提到的模式非常适合保留通用代码。因此,我将侦听器添加到我的选项卡并将它们与特定片段相关联,如下所示:
bar.addTab(bar.newTab()
.setText("MyFragment")
.setTabListener(new TabListener<SomeFragment>(this, "myfargment", SomeFragment.class)));
并在泛型的帮助下单击关联的选项卡时实例化片段:
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
我的问题是在列表导航模式下在我的片段之间导航时如何实现类似的方式。我找不到类似的方法,因为 ActionBar 上列表的 OnNavigationListener 适用于整个列表,而不是像 tablistener 那样每个项目的基础。
或者我必须这样做:
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
switch (itemPosition) {
case 0:
//Replace the current fragment with FragmentA
break;
case 1:
//Replace the current fragment with FragmentB
break;
case 2:
//Replace the current fragment with FragmentC
break;
default:
break;
}
return true;
}
编辑:
我注意到一个有趣的行为:
虽然导航模式设置为NAVIGATION_MODE_TABS,但如果我将手机置于横向模式,它会将标签转换为列表并保留关联在片段和列表项之间(之前是选项卡项)我怎样才能按需而不是改变方向来实现这个结果?
【问题讨论】:
标签: android tabs android-fragments actionbarsherlock android-actionbar