這應該很簡單,但它不起作用。我想要的是兩個不同的選項卡,它們使用相同的活動類別。我不在乎他們是否共享相同的活動,或者他們各自擁有自己的實例。在此代碼中,我將第二個選項卡設置爲與第一個選項卡相同的活動,但只有第一個選項卡會加載到應用程序中。如果我點擊第二個標籤頁,我會看到一個黑屏:Android兩個具有相同活動的選項卡
//Create tabs
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
String tabTitle = getString(R.string.livevideo);
// Initialize intent
// Initialize tabspec for each tab and add it to host
intent = new Intent().setClass(this, CameraListView.class);
spec = tabHost.newTabSpec("live").setIndicator(tabTitle,res.getDrawable(R.drawable.livebtn)).setContent(intent);
tabHost.addTab(spec);
tabTitle = getString(R.string.videoplayback);
intent = new Intent().setClass(this, CameraListView.class);
spec = tabHost.newTabSpec("playback").setIndicator(tabTitle,res.getDrawable(R.drawable.playbackbtn)).setContent(intent);
tabHost.addTab(spec);
難道這不就是一件簡單的事嗎?我認爲用相同的活動製作新的意圖會實例化活動的第二個副本,但也許這不是Android的工作方式。
所以他們在這裏鍵是使用相同的tabspec名稱爲這兩個選項卡。這確實得到了兩個選項卡上的相同的活動,但我需要每個選項卡具有不同的ID。因此,這兩個選項卡共享一個列表視圖,但取決於選項卡類型將決定選擇某個項目時顯示的活動。有關如何在具有相同活動的情況下將選項卡引用爲不同的想法? – spentak 2011-05-21 19:17:04
你好再次:)不,tabSpec不必爲這兩個選項卡具有相同的名稱 - 你可以在我的代碼中看到,我調用兩次tabSpec = tabHost.newTabSpec(「tabSpec」);這意味着第二次初始化後的tabSpec是完全新的實例,而方法newTabSpec(String tag)的參數也不必相同。說實話,我不知道你和我的代碼之間有什麼區別:)查看我編輯的關於你評論第二部分的答案。 – 2011-05-21 21:02:35