我做了并运行了例子。但我接受了错误。
Error: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tabmenu/com.example.tabmenu.MainActivity: java.lang.IllegalArgumentException: you must specify a way to create the tab indicator.
mainActivity.java
@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
TabSpec tab1 = tabHost.newTabSpec("First Tab");
TabSpec tab2 = tabHost.newTabSpec("Second Tab");
TabSpec tab3 = tabHost.newTabSpec("Third Tab");
tab1.setIndicator("Tab1");
tab1.setContent(new Intent(this,Tab1Activity.class));
tab1.setIndicator("Tab2");
tab1.setContent(new Intent(this,Tab2Activity.class));
tab1.setIndicator("Tab3");
tab1.setContent(new Intent(this,Tab3Activity.class));
tabHost.addTab(tab1);
tabHost.addTab(tab2);
tabHost.addTab(tab3);
}
}
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tabmenu"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tabmenu.Tab1Activity"/>
<activity
android:name="com.example.tabmenu.Tab2Activity"/>
<activity
android:name="com.example.tabmenu.Tab3Activity"/>
<activity
android:name="com.example.tabmenu.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:11)
尝试更改此细分:
tab1.setIndicator("Tab1");
tab1.setContent(new Intent(this,Tab1Activity.class));
tab1.setIndicator("Tab2");
tab1.setContent(new Intent(this,Tab2Activity.class));
tab1.setIndicator("Tab3");
tab1.setContent(new Intent(this,Tab3Activity.class));
以下一个......就像这样:
tab1.setIndicator("Tab1");
tab1.setContent(new Intent(this,Tab1Activity.class));
--> tab2.setIndicator("Tab2");
--> tab2.setContent(new Intent(this,Tab2Activity.class));
--> tab3.setIndicator("Tab3");
--> tab3.setContent(new Intent(this,Tab3Activity.class));
错误是因为您没有使用tab2或tab3并重复使用tab1。
希望这有帮助。
答案 1 :(得分:0)
像这样修改你的清单(Bunu denermisin manifestinde)
<activity
android:name="com.example.tabmenu.MainActivity"
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="com.example.tabmenu.Tab1Activity"
android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="com.example.tabmenu.Tab2Activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.tabmenu.Tab2Activity"
android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="com.example.restaurant.Tab2Activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.tabmenu.Tab3Activity"
android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="com.example.tabmenu.Tab3Activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 2 :(得分:0)
试试这段代码......可能会有所帮助
public class Test extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, Tab1Activity.class);
spec = tabHost.newTabSpec("First").setIndicator("First")
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Tab2Activity.class);
spec = tabHost.newTabSpec("Second").setIndicator("Second")
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Tab3Activity.class);
spec = tabHost.newTabSpec("Third").setIndicator("Third")
.setContent(intent);
tabHost.addTab(spec);
}
对应的xml页面......
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabhost">
<LinearLayout
android:id="@+id/LinearLayout01"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
</FrameLayout>
</LinearLayout>
</TabHost>
答案 3 :(得分:0)
更改给定的陈述
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
到
TabHost tabHost = getTabHost();