タブ画面を切り替える

2011/03/04

Androidでタブ画面を切り替えるには、TabActivityを利用します。

参考ページ

Android Tab Layoutタブメニューを利用する

サンプルコード



  
      
          
          
      

TabActivity を利用数にはレイアウトを以下のように作成する (1) TabHost(id=tabhost) を追加する (2) TabWidget(id=tabs) と FrameLayout(id= tabcontent) を TabHost に追加する (3) TabHost addTab() で順番にコンテンツを追加

[java] public class Sample extends TabActivity implements TabHost.TabContentFactory {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final TabHost tabhost = getTabHost();
    tabhost.addTab(tabhost.newTabSpec("tab1")
            .setIndicator("追加", getResources().getDrawable(android.R.drawable.ic_menu_add))
            .setContent(new Intent(Sample.this, RaceResultList.class)
            .setFlags(Intent. FLAG_ACTIVITY_SINGLE_TOP)));

    tabhost.addTab(tabhost.newTabSpec("tab2")
            .setIndicator("削除", getResources().getDrawable(android.R.drawable.ic_menu_delete))
            .setContent(new Intent(Sample.this, RaceForecastList.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));

[/java]

(1) TabActivity を継承する (2) getTabHost() で TabHost を取得する (3) タブに追加する画面(Intent)を作成する (4) TabHost addTab() で順番に画面を追加する

タブが切り替わった時の、Intent の状態

「タブ切り替え」というより、Intent の Flags の仕様ですが、 setFlagsで、FLAG_ACTIVITY_CLEAR_TOP を指定するとタブを切り替える度に、onCreate が呼ばれる。 FLAG_ACTIVITY_SINGLE_TOP は一度作成したアクティビティが保持されます。

詳しくは、 Intent のCategoryとExtraとFlagの一覧表を作ってみたよ