今天查了一下TabActivity的使用方法。網路上的文章不是很全面,且總結不夠細緻。所以特地將整幅代碼整理出來,已方便大家查閱。初次寫發布Android的原始碼,不足指出請大家不吝賜教~ 閑話少說,下面進入正題。
我的開發環境是 Eclipse + Android SDK1.6。
Manifest.xml:
<?xml version="1.0" encoding="utf-8"?><br /><manifest xmlns:android="http://schemas.android.com/apk/res/android"<br /> package="com.keven"<br /> android:versionCode="1"<br /> android:versionName="1.0"><br /> <application android:icon="@drawable/icon" android:label="@string/app_name"><br /> <activity android:name=".MainFrame"<br /> android:label="@string/app_name"><br /> <intent-filter><br /> <action android:name="android.intent.action.MAIN" /><br /> <category android:name="android.intent.category.LAUNCHER" /><br /> </intent-filter><br /> </activity><br /> </application><br /> <uses-sdk android:minSdkVersion="4" /></p><p></manifest>
MainFrame.java:
package com.keven;</p><p>import android.app.AlertDialog;<br />import android.app.TabActivity;<br />import android.os.Bundle;<br />import android.view.LayoutInflater;<br />import android.view.Menu;<br />import android.view.MenuInflater;<br />import android.widget.TabHost;<br />import android.widget.TabHost.OnTabChangeListener;<br />import android.widget.TabHost.TabSpec;</p><p>public class MainFrame extends TabActivity implements OnTabChangeListener {<br />private TabHost tabHost;<br />private TabSpec tab1, tab2, tab3;</p><p>@Override<br />public void onCreate(Bundle savedInstanceState) {<br />super.onCreate(savedInstanceState);<br />tabHost = this.getTabHost();<br />LayoutInflater.from(this).inflate(R.layout.main,<br />tabHost.getTabContentView(), true);<br />tab1 = tabHost.newTabSpec("Id1").setIndicator("Tab1",<br />this.getResources().getDrawable(R.drawable.icon)).setContent(<br />R.id.tab1);<br />tabHost.addTab(tab1);<br />tab2 = tabHost.newTabSpec("Id2").setIndicator("Tab2",<br />this.getResources().getDrawable(R.drawable.icon)).setContent(<br />R.id.tab2);<br />tabHost.addTab(tab2);<br />tab3 = tabHost.newTabSpec("Id3").setIndicator("Tab3",<br />this.getResources().getDrawable(R.drawable.icon)).setContent(<br />R.id.tab3);<br />tabHost.addTab(tab3);<br />tabHost.setOnTabChangedListener(this);<br />}</p><p>@Override<br />public void onTabChanged(String tabId) {<br />new AlertDialog.Builder(this).setTitle("Hint").setMessage(tabId)<br />.setPositiveButton("OK", null).show();<br />}</p><p>private int[] tabMenus = { R.menu.menu1, R.menu.menu2, R.menu.menu3 };</p><p>public boolean onPrepareOptionsMenu(Menu menu) {<br />menu.clear();<br />MenuInflater inflater = getMenuInflater();<br />switch (tabHost.getCurrentTab()) {<br />case 0:<br />inflater.inflate(tabMenus[0], menu);<br />break;<br />case 1:<br />inflater.inflate(tabMenus[1], menu);<br />break;<br />case 2:<br />inflater.inflate(tabMenus[2], menu);<br />break;<br />default:<br />break;<br />}</p><p>return super.onCreateOptionsMenu(menu);<br />}</p><p>}
LayOut檔案,main.xml:
<?xml version="1.0" encoding="utf-8"?><br /><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />android:orientation="vertical" android:layout_width="fill_parent"<br />android:layout_height="fill_parent"><br /><LinearLayout android:id="@+id/tab1" android:layout_width="fill_parent"<br />android:layout_height="fill_parent" androidrientation="vertical"><br /></LinearLayout></p><p><LinearLayout android:id="@+id/tab2" android:layout_width="fill_parent"<br />android:layout_height="fill_parent" androidrientation="vertical"><br /></LinearLayout></p><p><LinearLayout android:id="@+id/tab3" android:layout_width="fill_parent"<br />android:layout_height="fill_parent" androidrientation="vertical"><br /></LinearLayout></p><p></FrameLayout>
Menu檔案,menu1.xml:
<?xml version="1.0" encoding="utf-8"?><br /><menu xmlns:android="http://schemas.android.com/apk/res/android"><br /><item android:id="@+id/item01" android:title="Tab1 M1"></item><br /><item android:id="@+id/item02" android:title="Tab1 M2"></item><br /><item android:id="@+id/item03" android:title="Tab1 M3"></item><br /></menu><br />
Menu檔案,menu2.xml:
<?xml version="1.0" encoding="utf-8"?><br /><menu xmlns:android="http://schemas.android.com/apk/res/android"><br /><item android:id="@+id/item04" android:title="Tab2 M1"></item><br /><item android:id="@+id/item05" android:title="Tab2 M2"></item><br /><item android:id="@+id/item06" android:title="Tab2 M3"></item><br /></menu><br />
Menu檔案,menu3.xml:
<?xml version="1.0" encoding="utf-8"?><br /><menu<br /> xmlns:android="http://schemas.android.com/apk/res/android"><br /> <item android:id="@+id/item07" android:title="Tab3 M1"></item><br /><item android:id="@+id/item08" android:title="Tab3 M2"></item><br /><item android:id="@+id/item09" android:title="Tab3 M3"></item><br /></menu><br />