2011-08-18 71 views
0

我的應用程序包含三個選項卡,其中兩個具有ListView,一個僅具有TextView活動。要獲得標籤我使用developers.anroid.com http://developer.android.com/resources/tutorials/views/hello-tabwidget.html 的例子根據這個例子我的佈局主要活動是:與選項卡異常:「您必須指定一種方法來創建選項卡指示器」

<?xml version="1.0" encoding="utf-8"?> 
<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:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

<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" 
/> 


</LinearLayout> 

</TabHost> 

那麼,下一個代碼是活動的代碼(只有兩頁):

public class MainActivity extends TabActivity { 



@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tabs_layout_start_page); 

    Resources res = getResources(); 
    TabHost tabHost = getTabHost(); 
    TabHost.TabSpec spec; 
    Intent intent; 

    intent = new Intent(this, ListViewTab1Activity.class); 
    spec = tabHost.newTabSpec("Page1").setIndicator("Page 1", res.getDrawable(R.drawable.icon)) 
    .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent(this, ListViewTab2Activity.class); 
    spec = tabHost.newTabSpec("Page 2").setIndicator("Page 2", res.getDrawable(R.drawable.icon)) 
    .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(1); 

} 

}

每個意圖指向另一活動,其具有在佈局和代碼硬編碼的ListView到從資源串陣列定義。但啓動後,我得到異常 IllegalArgument異常「」你必須指定一個方法來創建選項卡指示器」。這讓我停了下來,請幫幫我。 感謝大家

回答

1
Intent i; 
    i = new Intent().setClass(this, Tab1.class); 
    TabSpec sp = th.newTabSpec("Tab1"); 
    sp.setIndicator("alma"); 
    sp.setContent(i); 
    th.addTab(sp); 

    i = new Intent().setClass(this, Tab2.class); 
    sp = th.newTabSpec("Tab2"); 
    sp.setIndicator("alma2"); 
    th.addTab(sp); 
    th.setCurrentTab(0); 

此代碼是作品完美,所以你應該儘量讓 這個

spec = tabHost.newTabSpec("Page 2").setIndicator("Page 2", res.getDrawable(R.drawable.icon)) 

走散了,因爲我做了什麼。也許shoudn`t使用單命令行設置ATTRS。

1

我只是有這個同樣的問題。

,我發現我的問題是SP

重用我這樣做是爲了解決該問題:使用不同的則tabspec值固定的問題,我

TabSpec spec1=tabHost.newTabSpec("Tab 1"); 
    spec1.setContent(R.id.tab1); 
    spec1.setIndicator("Tab 1",getResources().getDrawable(R.drawable.icon_tab1_config)); 

TabSpec spec2=tabHost.newTabSpec("Tab 2"); 
    spec2.setIndicator("Tab 2",getResources().getDrawable(R.drawable.icon_tab2_config)); 
    spec2.setContent(R.id.tab2); 

相關問題