2012-01-19 57 views
0

我是Android新手誰能幫我解決我關於TabHost的問題? 我有一個Tab主機和3個類,我想要的是把這個活動或類稱爲TabHost。我要做什麼。這是我在我的Tab主機中的代碼:如何將其他活動放在tabhost中?

public class Tab extends Activity { 

    TabHost th; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

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

     Resources res = getResources();  

     th = (TabHost)findViewById(R.id.tabhost);  
     th.setup(); 
     TabSpec specs = th.newTabSpec("tag1"); 
     specs.setContent(R.id.tab1); 
     specs.setIndicator("Settings", res.getDrawable(R.drawable.ic_tab_setting)); 
     th.addTab(specs); 

     specs = th.newTabSpec("tag2"); 
     specs.setContent(R.id.tab2); 
     specs.setIndicator("Battery Information",res.getDrawable(R.drawable.ic_tab_batteryinfo)); 
     th.addTab(specs); 

     specs = th.newTabSpec("tag3"); 
     specs.setContent(R.id.tab3); 
     specs.setIndicator("Help", res.getDrawable(R.drawable.ic_tab_help)); 
     th.addTab(specs); 
    } 
} 

我在哪裏打電話給那三個班級?

回答

0

當您使用Tabs時,您需要擴展TabActivity以代替Activity。而且你也不需要通過id找到它。

所以,你應該改變你的代碼,如下圖所示,

public class Tab extends TabActivity{ 
    ... 
    TabHost tabHost; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     ... 
     setContentView(R.layout.tab); 

     ... 
     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, Activity1.class); 
     spec = tabHost.newTabSpec("Tab One").setIndicator("Tab One",res.getDrawable(R.drawable.first_tab)).setContent(intent); 
     tabHost.addTab(spec); 

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

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

     tabHost.setCurrentTab(0); // set first tab selected when activity is first loaded 
     ... 
    } 
} 

不要忘了添加過所有3個活動,以你的清單文件,即。 Activity1.class,Activity2.class和Activity3.class。

+0

當您使用「活動」時,您可以使用「活動」中的選項卡。你唯一需要的是通過'findViewById()'找到'TabHost',然後調用方法'tabHost.setup();' –

+0

Yup.i知道,但我解釋了我給出的例子。 – Hiral

+0

爲什麼在我的tabhost中調用TaskKiller.java時會出現錯誤?他們在同一個包裏。這裏是錯誤: E/AndroidRuntime(6462):java.lang.RuntimeException:無法啓動活動 –

2

您可以將意圖創建爲Intent intent = new Intent(this, otherActivity.class);並將此意圖設置爲specs.setContent(intent);Here是使用Tab的示例。

0

您可以通過使用ActivityGroup而不是Activity來完成此操作。檢查下面的鏈接,你會得到一個想法。

Experience - Multiple Android Activities in a TabActivity

我希望它可以幫助你。

+0

我盡我所有的建議,但仍然有一個錯誤。它總是提示我強制關閉應用程序。我不知道該怎麼做。我的頭正在爲這件事感到痛心。 :) 什麼我叫什麼是擴展Activity的TaskKiller.java和這個類的功能是殺死所有正在運行的應用程序。有可能叫這個班嗎?請幫助我感謝您的幫助。 –