2011-04-03 29 views
0

我有一個Android應用程序使用TabHost在每個選項卡中創建具有不同活動的多個選項卡。在Android應用程序中訪問同級選項卡?

當用戶在與標籤A相關聯的活性的某些動作,我要編程切換到選項卡B,並調用選項卡B的活性的功能,以提供其與標籤A.生成一些數據

這樣的事情可能嗎?我不知道如何從A活動中訪問TabHost對象或B活動。我嘗試通過將這些對象作爲「額外」添加到Intent來將這些對象傳遞給A活動,但這不起作用,可能是因爲這些類不是可序列化的。如果我可以訪問TabActivity本身,那可能是最好的解決方案。

感謝, 弗蘭克

回答

0

你可以在應用程序水平的物體藏匿的數據。然後當活動B開始時,它可以檢查數據。

1

實現在TabActivity一個BroadcastReceiver,另一個在活動B.

註冊都在清單中使用自定義意圖過濾器「動作」

獲取活動A發送一個廣播,意圖包括額外的TabActivity將收到。

讓TabActivity開關標籤隨後發送一個帶有一個意圖的廣播,其中活動B將接收/處理額外信息。

爲了擴大這一點,認爲它是這樣的...

在「正常」情況下的活動是一個獨立的/自包含的實體。如果需要由另一個活動執行一些操作,則不需要知道其他活動的任何內容,只需「調用」它的一種方式,即使用具有相關操作/類別和額外數據的Intent集。

對於作爲標籤內容嵌入的活動,這大多仍然適用。活動本身並不知道它已被嵌入爲標籤內容(也不應該)。因此它對TabHost或Tabactivity一無所知(當使用它時)。它也不/不應該/不應該特別知道有其他標籤與其他活動...

然而,TabActivity知道標籤內容(它創建它們之後)和能夠在它們之間進行調解。如果您只是簡單地通過活動「X」廣播來執行特定操作,並允許TabActivity接收並按照意圖類型/數據操作,那麼各個兄弟姐妹就不需要特別瞭解對方如何工作。

無論如何,這將是我的方法。 :-)

+0

你以前幫我用過我的應用程序,我還沒有確定我的選項卡式應用程序是否應該有多個活動按照developer.google.com或者只有一個活動,儘可能多的堆棧溢出似乎認爲。你對此有任何意見嗎?我可以看到只有一項活動的原因。 – 2011-06-07 23:50:03

+0

@hooraygradschool:我只有我的當前應用程序的TabActivity的經驗。它提供了一個7天的電視指南(每天一個標籤)。每個選項卡的內容是一個ListActivity,所有7個選項卡使用相同的類,但是每個人都知道他們是否是第1天,第2天等,並且查詢SQLite數據庫以查找他們自己的24小時插槽。換句話說,這是一個Activity類重複7次。如果每個Tab都必須爲不同的數據集保留相似的內容,則這是執行此操作的唯一方法。如果他們提供不同的功能,對不同的Tab內容使用不同的類只對我有意義。希望有所幫助。 – Squonk 2011-06-08 16:23:14

相關問題