0

我对 ActionBar 上的选项卡的 onclick 事件有疑问。我想将 ActionBar-Tab 逻辑“外包”给一个类,以便我可以在所有活动中重用 ActionBar-Tabs-navigation。

这是外包的“ActionBar-Tab”逻辑:

public class TabActivity extends Activity implements TabListener 

{

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab);

    // Set up the ActionBar to show tabs:
    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Add Tabs:
    actionBar.addTab(actionBar.newTab().setText("Dashboard").setTabListener(this),0,true);
    actionBar.addTab(actionBar.newTab().setText("Search").setTabListener(this),1,false);
    actionBar.addTab(actionBar.newTab().setText("Map").setTabListener(this),2,false);
}

@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) 
{
    switch(arg0.getPosition())
    {
       case 0:
           Intent dashboard = new Intent(this,DashBoardActivity.class);
           startActivity(dashboard);
       break;

       case 1:
           Intent suche = new Intent(this,SucheActivity.class);
           startActivity(suche);
       break;

       case 2:
           // Start Intent
       break;

       case 3:
           // Start Intent
       break;

       case 4:
         // Start Intent
       break;
    }
}

@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {

}

@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {

}

}

这是扩展 TabActivity 类的 DashBoardActivity:

public class DashBoardActivity extends TabActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dash_board);
}

}

DashBoardActivity 也是我的应用程序的启动器活动。

所以,我的问题。当应用程序启动时,ActionBar 导航按预期成功显示。我看到(通过 Log.i),当应用程序启动时,ActionBar 的 onTabSelected() 被调用(没有点击它)。

如您所见,我想根据单击的选项卡启动不同的活动。

问题:应用程序启动,- onTabSelected 在启动时自动调用,- 然后活动“DashBoardActivity.class”开始。(但当前活动是 DashBoardActivity!?!)

启动的 Activity 扩展了 TabActivity,但未显示 ActionBar-Tabs。

有解决办法吗?

4

1 回答 1

2

更改此行:

actionBar.addTab(actionBar.newTab().setText("Dashboard").setTabListener(this),0,true);

至:

actionBar.addTab(actionBar.newTab().setText("Dashboard").setTabListener(this),0,false);

我从 Android 文档中得到的信息:

public abstract void addTab (ActionBar.Tab tab, int position, boolean setSelected)

  • setSelected - 如果添加的选项卡应成为选定选项卡,则为真。
于 2013-01-07T23:58:44.127 回答