下面图片是测试程序的效果图
两个选项卡的实现
布局文件 main.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TabHostxmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/tabhost"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <LinearLayoutandroid:orientation="vertical"
- android:layout_width="fill_parent"android:layout_height="fill_parent">
- <TabWidgetandroid:id="@android:id/tabs"
- android:layout_width="fill_parent"android:layout_height="wrap_content"/>
- <FrameLayoutandroid:id="@android:id/tabcontent"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:layout_weight="3">
- </FrameLayout>
- </LinearLayout>
- </TabHost>
- </LinearLayout>
Java代码实现 MainActivity.java
- packagehkp.test;
- importandroid.app.TabActivity;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.widget.TabHost;
- publicclassMainActivityextendsTabActivity{
- privateTabHosttabHost;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //TODOAuto-generatedmethodstub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tabHost=getTabHost();
- tabHost.addTab(tabHost.newTabSpec("tab1")
- .setIndicator("First")
- .setContent(newIntent(this,FirstGroupTab.class)));//第一个选项卡使用一个ActivityGroup
- tabHost.addTab(tabHost.newTabSpec("tab2")
- .setIndicator("Second")
- .setContent(newIntent(this,SecondTab.class)));//第二个选项卡是一个Activity
- tabHost.setCurrentTab(0);
- }
- }
使用 ActivityGroup的管理
- packagehkp.test;
- importandroid.app.ActivityGroup;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.Window;
- /**
- *@authorHuangKaipenghkp2006@gmail.com
- *2011-10-5
- *
- */
- publicclassFirstGroupTabextendsActivityGroup{
- /**
- *一个静态的ActivityGroup变量,用于管理本Group中的Activity
- */
- publicstaticActivityGroupgroup;
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //TODOAuto-generatedmethodstub
- super.onCreate(savedInstanceState);
- group=this;
- }
- @Override
- publicvoidonBackPressed(){
- //TODOAuto-generatedmethodstub
- //super.onBackPressed();
- //把后退事件交给子Activity处理
- group.getLocalActivityManager()
- .getCurrentActivity().onBackPressed();
- }
- @Override
- protectedvoidonResume(){
- //TODOAuto-generatedmethodstub
- super.onResume();
- //把界面切换放到onResume方法中是因为,从其他选项卡切换回来时,
- //调用搞得是onResume方法
- //要跳转的界面
- Intentintent=newIntent(this,FirstActivity.class).
- addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- //把一个Activity转换成一个View
- Windoww=group.getLocalActivityManager().startActivity("FirstActivity",intent);
- Viewview=w.getDecorView();
- //把View添加大ActivityGroup中
- group.setContentView(view);
- }
ActivityGroup中的第一个Activity
- packagehkp.test;
- importandroid.app.Activity;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.Window;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- /**
- *@authorHuangKaipenghkp2006@gmail.com
- *2011-10-5
- *
- */
- publicclassFirstActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //TODOAuto-generatedmethodstub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.first_activity);
- //跳转到第二个界面
- Buttonbtn=(Button)findViewById(R.id.btn);
- btn.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Intentintent=newIntent(FirstActivity.this,SecondActivity.class).
- addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- //把一个Activity转换成一个View
- Windoww=FirstGroupTab.group.getLocalActivityManager()
- .startActivity("SecondActivity",intent);
- Viewview=w.getDecorView();
- //把View添加大ActivityGroup中
- FirstGroupTab.group.setContentView(view);
- }
- });
- }
- }
XML
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="这个是ActivityGroup中的第一个界面!"
- />
- <Buttonandroid:id="@+id/btn"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="跳转到本组中的另一个Activity中"/>
- </LinearLayout>