我們正在編寫一個包含4個標籤的應用程序:Map,People,Places,Events。應用中的人物,地點和事件在地圖上顯示爲圖標。默認情況下,人物,地點和事件標籤分別顯示自定義渲染的列表視圖,分別顯示所有人物,地點和事件。Android - Tabs,MapView,標籤內的活動
alt text http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png
現在,右邊的標籤現在,每個都有其內容的意圖將推出相應的活動。例如,有一個擴展MapActivity的MapTabActivity,一個顯示人員的ShowPeopleListActivity,等等。
我看到一個lotofStackOverflowquestions /回答說,由於路上的各種限制的TabHost是設置,最好不要使用活動選項卡的內容。例如,不可能啓動一個新的活動,並且它不能取代選項卡中的現有活動,但可以用不同的視圖切換一個視圖。
現在,我正處於一個十字路口。我們已經(無論更好還是更糟糕)花費相當多的時間試圖讓這個應用程序按照它當前結構化的方式工作,其中Activities作爲選項卡的內容。當單擊與Person,Place或Event相對應的圖標時,它會在與該對象相對應的URI上觸發VIEW Intent;這是由一個活動,然後顯示該對象拾起。 Map和單個列表中都有相同的機制。我們非常喜歡這爲我們提供的鬆散耦合;我們只給出一個VIEW命令和URI給person/place/event,它會自動將我們帶入正確的活動。當然,推出的活動涵蓋了標籤視圖,而不是出現在內部,但我們願意接受這一點。
雖然這是一個問題:從Show活動中,我們希望能夠返回到地圖,集中在該人員,地點或事件。我們可以啓動一個新的活動來再次顯示地圖,但現在我們將地圖活動作爲選項卡的內容,再加上展示活動以及活動堆棧中的新地圖活動;鑑於地圖活動的資源密集程度如何,我猜這不是最理想的方式。
我想我的問題是,是否有一個好的教程在某處顯示如何使用TabHost完成複雜任務?我見過HelloTabWidget;我正在尋找比這更復雜的東西。我很擔心,如果我們切換到基於視圖的做事方式,我們將不得不做很多家務來攔截所有的後臺事件,嘗試切換視圖等等,以及以我們不想要的方式強烈地耦合我們的程序。
任何建議在前進的道路上將不勝感激。我們是Android的新手,所以我們試圖遵循既定的最佳實踐,但當我們看到的少數示例對我們的用例來說太簡單時,很難。
好的,我明白你的觀點,如果我們保持所有intents設置相同的方式,Show活動啓動,那麼back事件處理完全一樣。 所以我猜如果我們以編程方式切換標籤的內容而不是啓動的意圖,真正的複雜性(和後面的事件痛苦)將是。例如。通常顯示人員列表的人員選項卡被告知當點擊給定人員時切換到顯示人員視圖。在那種情況下,我們不得不自己處理一堆視圖? – I82Much
此外,如何在標籤內沒有任何活動作爲標籤內容的地圖?那可能嗎? – I82Much
w/r/t你的第一個評論,是的,你需要做你自己的堆棧管理。 w/r/t你的第二個評論,是的,你可以AFAIK。使您的主要活動成爲MapActivity而不是TabActivity。 TabActivity爲你做的唯一事情就是在你的TabHost上自動調用setup(),然後在添加任何TabSpecs之前你需要自己做。然後,MapActivity爲您提供將地圖放入選項卡所需的內容。這裏可能有問題,但是我認爲它應該可以正常工作。 – CommonsWare