5

アクティビティにタブビューを実装しようとしています。次のようなエラーが発生します。

java.lang.IllegalArgumentException:タブインジケーターを作成する方法を指定する必要があります

     Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, MonthActivity.class);

        // Initialize a TabSpec for each tab and add it to the TabHost
        spec = tabHost.newTabSpec("Month")
                      .setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs
        intent = new Intent().setClass(this, WeekActivity.class);
        spec = tabHost.newTabSpec("Week")
                .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, DayActivity.class);
        spec = tabHost.newTabSpec("Day")
                .setContent(intent);
        tabHost.addTab(spec);
        tabHost.setCurrentTab(2);

これは私の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:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="5dp" >

    <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"
        android:padding="5dp" >
        </FrameLayout>
</LinearLayout>

どこで間違いを犯しているのですか?お手数をおかけしますが、よろしくお願いいたします。

4

2 に答える 2

8

これを試して:

Resources res = getResources(); // Resource object to get Drawables   
tabHost = getTabHost();  // The activity TabHost  
TabHost.TabSpec spec;  // Resusable TabSpec for each tab    
Intent intent;  // Reusable Intent for each tab   

intent = new Intent().setClass(this, First.class);      
spec = tabHost.newTabSpec("First Tab").setIndicator("First Tab",res.getDrawable(R.drawable.icon)).setContent(intent); 
tabHost.addTab(spec);   

intent = new Intent().setClass(this, Second.class); 
spec = tabHost.newTabSpec("Second Tab").setIndicator("Second Tab",res.getDrawable(R.drawable.icon)).setContent(intent); 
tabHost.addTab(spec); 

tabHost.setCurrentTab(1);

そして、あなたの活動はTabActivityあなたがあなたのTabHostを定義する場所でなければならないことを確認してください。

于 2011-11-14T13:26:18.023 に答える
4

より明確で正確な答えは、TabHost.TabSpecオブジェクトでsetIndicatorメソッドを呼び出していないということです。したがって、この呼び出しをすべてのタブ仕様オブジェクトに追加すると、問題は解決されます。

spec.setIndicator( "Tab 1");

于 2012-04-28T18:14:29.637 に答える