2013-05-07 64 views
0

我有一個使用TabHost並將不同活動加載到佈局的TabContent區域的應用程序。如果我點擊一個標籤,一個新的意圖就會啓動,開始活動。所有工作都很好,但我很好奇我如何處理以下事情。基本上,如果我點擊聯繫人的例子,contacts.java類被加載,我的contacts.xml佈局文件被用於setContentView。但是,如果我單擊我的contacts.xml佈局中的一個按鈕,比如說「管理聯繫人」,我需要在同一個tabcontent中加載的意圖,而且它似乎只是打開它自己的意圖,而不是在tabcontent區域內。有什麼我失蹤的方式TabHost是爲了工作?我應該有一個contacts.java類,只需設置不同的內容視圖,而不是真的開始一個新的活動?我有一個標題圖像和在我的main.xml佈局中定義的選項卡,我的main.java是包含tabhost的活動。我希望我的問題很明確,非常感謝任何幫助!從tabHost的tabContent區域中的活動開始活動

回答

0

http://www.mkyong.com/android/android-tablayout-example/ 檢查此示例,然後爲每個父級活動即,如果您有一個選項卡與聯繫人和配置文件。然後,聯繫人和個人將是你的父母activity.So延長該父活動的ActivityGroup,使該活動的靜態上下文和在活動中使用

Intent intent = new Intent(ctx, c); 
    View subView = getLocalActivityManager().startActivity(id, 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView(); 
    replaceView(subView); 
} 

public void replaceView(View subView) { 
    viewStackList.add(subView); 
    setContentView(subView); 
} 

其中c是要切換的類調用的意圖to和viewStackList是View類型的ArrayList。這個數組列表被用於維護堆棧以用於返回點擊。

+0

感謝newBie,你的代碼基本上是我解決我的問題的方法! – Phil 2013-05-10 18:52:35

0

正如Eclipse可能告訴你的,TabHost和所有相關的表格命令/函數都被棄用了。有了這個免責聲明,讓我告訴你,我仍然在使用它作爲我的應用程序!

我的印象是,使用標籤是讓你可以有一個活動,但多個視圖。這並不意味着你必須只有一個.java。

標籤之間切換,你應該只需要做tabHost.setCurrentTab(int);

也就是說,假設你建立你的標籤了。

+0

是的,我的選項卡工作正常,但是如果我點擊我的其中一個選項卡,然後單擊tabcontent區域內的某個按鈕,啓動的活動不會加載到tabcontent區域內,它會在沒有選項卡的情況下加載在底部和我在頂部設置的頭像。無論如何強制意圖在特定tabcontent區域打開? – Phil 2013-05-07 18:55:02

+0

這聽起來像你試圖這樣做也許:http://stackoverflow.com/questions/1306689/launching-activities-within-a-tab-in-android 如果是這樣,很好,因爲有一個解決方案或兩個可能適合你!你應該能夠指定一個窗口來運行活動。 – 2013-05-07 19:15:45