使用未知数量的标签
Using unknown number of tabs
我想创建一个可以显示任意数量标签的 activity,而不是为每个标签创建一个 activity。
可能吗?
我看到创建选项卡的唯一方法包括为每个选项卡创建一个 activity。
您可以尝试如下,
从 ActionBarActivity 扩展您的 activity 并以编程方式添加所需数量的选项卡,
ActionBar.TabListener tabListener;
mactionBar = getActionBar();
mactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tabListener=new ActionBar.TabListener() {
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
displayTabs(tab.getPosition());
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
displayTabs(tab.getPosition());
}
};
mactionBar.addTab(mactionBar.newTab().setText(<any text>).setTabListener(tabListener));
//call the same method for required number of tabs
为每个选项卡点击调用相同的片段
private void displayTabs(int position)
{
Fragment fragment = null;
switch (position) {
case 0:
fragment = new YourFragment();
break;
case 1:
fragment = new YourFragment();
break;
// same for required numder of cases
default:
break;
}
if (fragment != null)
{
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(<container id>, fragment).commit();
}
}
我想创建一个可以显示任意数量标签的 activity,而不是为每个标签创建一个 activity。
可能吗?
我看到创建选项卡的唯一方法包括为每个选项卡创建一个 activity。
您可以尝试如下,
从 ActionBarActivity 扩展您的 activity 并以编程方式添加所需数量的选项卡,
ActionBar.TabListener tabListener; mactionBar = getActionBar(); mactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); tabListener=new ActionBar.TabListener() { @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { displayTabs(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { displayTabs(tab.getPosition()); } }; mactionBar.addTab(mactionBar.newTab().setText(<any text>).setTabListener(tabListener)); //call the same method for required number of tabs
为每个选项卡点击调用相同的片段
private void displayTabs(int position) { Fragment fragment = null; switch (position) { case 0: fragment = new YourFragment(); break; case 1: fragment = new YourFragment(); break; // same for required numder of cases default: break; } if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(<container id>, fragment).commit(); } }