我正在使用ActionBarSherlock并将此模式应用于我在 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 上的列表适用于整个列表,而不是像 tablistener 那样以每个项目为基础。OnNavigationListener
还是我必须做这样的事情:
@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
如果我将手机置于横向模式,它会将选项卡转换为列表并保留片段和列表项之间的关联(之前是选项卡项)我怎么能根据需求而不是方向改变来实现这个结果?