1

我有一個主要活動是tabhost的Android應用程序。我正在向tabhost添加多個選項卡,以便執行幾個活動。Android強制標籤活動創建?

我的問題是,這些活動沒有創建(onCreate不會被調用),直到我點擊標籤。這是一個問題,因爲我需要註冊broadcastreceivers:可能會發送廣播 - 在打開特定選項卡之前。

我試圖解決此方式:

  • 設置我的接收機靜態和從其他地方註冊。這是不可能的,因爲我需要調用方法。
  • 調用tabHost.setCurrentTabByTag(the_tag),然後切換回我的根選項卡。這隻有在有時候纔有效,這是一個非常醜陋的解決方案。
  • 不使用活​​動,只是使用視圖。也不是一個非常優雅的解決方案,因爲它將我的tabHost活動變成一個巨大的主類,做各種不相關的事情。

這是什麼問題的最佳解決方案?我能以某種方式發送廣播「隊列」,而不是在沒有接收器時消失嗎?我可以強制創建我的選項卡活動(這不是問題,我的用戶幾乎可以保證在某些點使用每個選項卡)?其他想法?

編輯:

根據CommonsWare在這個問題; Update tabs from a tab's activity in a Android TabHost

可能實現標籤的意見,而不是活動的一個更好的主意......這有點改變了我的問題:

如何單獨的不同類型的邏輯在同一個活動?並不真正期望30+方法的可行性。

回答

0

我會使用TabActivity作爲我的廣播接收器而不是標籤活動。這會給你更清晰的代碼和更多的控制你如何處理廣播

+0

這將如何解決任何事情?我仍然留下未初始化的選項卡活動,在廣播到達時需要調用方法。 – 2010-06-03 15:40:11

+1

您應該只嘗試從當前正在運行的活動中調用方法。我認爲不可能同時從一個tabhost初始化並運行所有活動。這樣做是不好的做法,因爲這會對手機電池和處理器造成重大損失。 如果在您的活動暫停或尚未初始化時發生廣播,則可以將其存儲在TabActivity中,並僅在該活動恢復時將其傳遞給相關活動。 – m6tt 2010-06-03 15:55:12

+0

@disretrospect您能不能展示示例如何在創建/恢復時將TabActivity中的數據傳遞給相關的childActivity?謝謝 – zeratul021 2011-08-30 17:49:54