2011-11-14 55 views
5

我想爲我的活動實現Tab View。我收到一個錯誤,說明。Android TabView錯誤?

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> 

我在哪裏做我的錯誤?感謝您的時間和意見。

回答

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); 

,並確保您的活動必須是在那裏定義你TabHost一個TabActivity

4

更清晰準確的答案是您沒有在TabHost.TabSpec對象上調用setIndicator方法,因此如果將此調用添加到每個選項卡spec對象,您的問題將得到解決。

spec.setIndicator(「Tab 1」);