0

アクションバーのタブの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は、私のアプリのLauncherアクティビティでもあります。

だから、私の問題。アプリが起動すると、ActionBarナビゲーションが期待どおりに正常に表示されます。(Log.iを介して)アプリが起動すると、ActionBarのonTabSelected()が(クリックせずに)呼び出されることを確認しました。

ご覧のとおり、クリックしたタブに応じて、さまざまなアクティビティを開始したいと思います。

問題:アプリが起動し、起動時にonTabSelectedが自動的に呼び出され、アクティビティ「DashBoardActivity.class」が開始されます。(ただし、現在のアクティビティはDashBoardActivity!?!)

開始されたアクティビティはTabActivityを拡張しますが、ActionBar-タブは表示されません。

解決策はありますか?

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 タブ、int 位置、ブール値 setSelected)

  • setSelected - 追加されたタブが選択されたタブになる場合は true。
于 2013-01-07T23:58:44.127 に答える