tabを利用してのActivityを表示する。

前回はtabの中にViewを表示させたので、今回はActivityを表示させたいと思います。

tab

見た目は前回とほぼ同じです。

Android Tab Layout Y.A.M の 雑記帳

を参考にさせていただきました。

前回はActivityを継承したクラスにTabHostを参照してViewを表示させたのですが、その方法だと、Tabの中にActivityを読み込む事ができません。(そういう仕様っぽいです。。)

なので、今回はメインのアクティビティクラスにはTabActivityを継承して利用をします。

 

まず、最初に読み込み対象のアクティビティを作成します。

tab1Activity.java

package in.andante.tabAct;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class tab1Activity extends Activity {
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 TextView textview = new TextView(this);
 textview.setText("This is Tab1");
 setContentView(textview);
 }
}

tab2Activity.java

package in.andante.tabAct;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class tab2Activity extends Activity {
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 TextView textview = new TextView(this);
 textview.setText("This is Tab2");
 setContentView(textview);
 }
}

上記のActivityを利用する為にマニフェストに登録をします。

manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="in.andante.tabAct"
 android:versionCode="1"
 android:versionName="1.0">
 <uses-sdk android:minSdkVersion="7" />

 <application android:icon="@drawable/icon" android:label="@string/app_name">
 <activity android:name=".TabAct"
 android:label="@string/app_name">
 <intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
 </activity>
 <activity
 android:name=".tab2Activity">  
 </activity>
 <activity
 android:name=".tab1Activity">  
 </activity>  
 </application>
</manifest>

次にmain.xmlですが、一番外の要素をtabHostにする必要があるので

main.xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@android:id/tabhost"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <LinearLayout
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <TabWidget
 android:id="@android:id/tabs"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" />
 <FrameLayout
 android:id="@android:id/tabcontent"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"/>
 </LinearLayout>
</TabHost>

とします。FrameLayoutの中には必要のない要素はいれないようにしましょう。

TabActivityを利用する場合には、TabHostをgetTabHost()で取得できるのでメインのクラスは下記です。

package in.andante.tabAct;

import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class TabAct extends TabActivity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 TabHost tabHost = getTabHost();
 TabSpec tab1 = tabHost.newTabSpec("tab1");
 tab1.setIndicator("tab1");
 tab1.setContent(new Intent(this, tab1Activity.class));
 tabHost.addTab(tab1);
 
 TabSpec tab2 = tabHost.newTabSpec("tab2");
 tab2.setIndicator("tab2");
 tab2.setContent(new Intent(this, tab2Activity.class));
 tabHost.addTab(tab2);
 }
}

で簡単に作成できました。

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑