请在下面的代码而不是您的代码中编写代码,以便在一个TabActivity中添加多个活动,这将解决您的问题。
ActivityStack.java
public class ActivityStack extends ActivityGroup {private Stack<String> stack;@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (stack == null) stack = new Stack<String>(); // start default activity push("FirstStackActivity", new Intent(this, Tab_SampleActivity.class));}@Overridepublic void finishFromChild(Activity child) { pop();}@Overridepublic void onBackPressed() { pop();}public void push(String id, Intent intent) { Window window = getLocalActivityManager().startActivity(id, intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); if (window != null) { stack.push(id); setContentView(window.getDecorView()); }}public void pop() { if (stack.size() == 1) finish(); LocalActivityManager manager = getLocalActivityManager(); manager.destroyActivity(stack.pop(), true); if (stack.size() > 0) { Intent lastIntent = manager.getActivity(stack.peek()).getIntent(); Window newWindow = manager.startActivity(stack.peek(), lastIntent); setContentView(newWindow.getDecorView()); }}}TabActivity.java
public class TabActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab_screen); TabHost tabHost = getTabHost(); Intent intent = new Intent().setClass(this, ActivityStack.class); TabHost.TabSpec spec = tabHost.newTabSpec("tabId").setIndicator("Temp", getResources().getDrawable(R.drawable.home)); spec.setContent(intent); tabHost.addTab(spec); Intent intent1 = new Intent().setClass(this, ActivityStack.class); TabHost.TabSpec spec1 = tabHost.newTabSpec("tabId").setIndicator("Temp", getResources().getDrawable(R.drawable.invoice)); spec1.setContent(intent1); tabHost.addTab(spec1); tabHost.setCurrentTab(0); }}FirstActivity.java
public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); textView.setText("Tab Sample Activity "); textView.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(getParent(), SecondActivity.class); ActivityStack activityStack = (ActivityStack) getParent(); activityStack.push("SecondActivity", intent); } }); setContentView(textView); }}SecondActivity.java
public class SecondActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); textView.setText("First Stack Activity "); textView.setonClickListener(new View.onClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(getParent(), ThirdActivity.class); ActivityStack activityStack = (ActivityStack) getParent(); activityStack.push("ThirdActivity", intent); } }); setContentView(textView); }}ThirdActivity.java
public class ThirdActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); }}将以下XML文件添加到res / layout文件夹中。
1)tab_screen.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" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="3dp" > <frameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@android:id/tabs" android:layout_weight="1" /> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" /> </RelativeLayout></TabHost>
2)main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /></LinearLayout>
AndroidManifest.xml:-
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.tabsample" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".FirstActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".TabActivity" 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=".ActivityStack" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".SecondActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name=".ThirdActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application></manifest>
并请参见下面的链接,以获取有关在一个TabActivity下添加多个活动以及完整示例的更多信息。
Android-
一个TabActivity下的多个Android活动



