2010-08-02 59 views
0

這個問題實際上有兩個部分。修改應用程序工作流程以使用TabActivity

第一部分:

我一直在發展我幾個星期的第一個應用程序。我有5個屏幕,一切都很好。不過,我正在考慮將應用的導航改爲TabView。

我還沒有深入研究過它,但我希望有人能爲我節省一點時間。似乎人們通常不會在每個標籤中放置活動。他們只是將標籤內容指向View。這是我的主要挫折所在。 1)我已經有了充滿代碼的Activity類,2)我無法很快猜出使用TabView的應用程序的結構。例如,我在哪裏放置處理程序代碼以點擊View上的按鈕?它是否都以某種方式被傾倒到TabView活動中?

我想要的是如果你可以請給我一個我正在做的事情的快速簡介,回答你認爲我可能有的任何問題,並指向我創建TabView應用程序的一些資源。一個快速的谷歌搜索真的只是告訴我如何創建一個TabView活動,並添加一些標籤。代碼沒有更深入。例如,假設我有一個佈局xml在我的選項卡的內容窗格中顯示,那麼代碼將在哪裏點擊我在該佈局中的按鈕?

第二部分:

我添加了一個TabActivity來包裝我公司目前已在活動目前我有活動填充我的選項卡的內容(雖然最終我想做到這一點。最有效的方式,它似乎沒有活動是標籤內容)。我注意到一些相當煩人的東西。我的主要活動是我爲我的用戶寫的一個活動,用於登錄他們的帳戶。登錄後,他們被帶到我的標籤活動。這裏是發生了什麼:

當我在我的選項卡活動,並通過單擊主頁按鈕「我最小化」的應用程序,然後再次啓動它,我不會被帶回到選項卡活動。我被帶到我的活動日誌中。爲什麼?我沒有將我的Tab Activity的launchMode設置爲singleInstance ...或者默認情況下是singleInstance?如何讓應用程序重新啓動以顯示選項卡活動(理想情況下,通過設置一些參數,假設我做錯了什麼,而不必將這些數據保存在某處並閱讀並以編程方式告訴它該怎麼做)?

感謝您所有的時間和幫助

+0

什麼是您的登錄活動的launchMode?它不能是'singleTask'這個工作。如果你把logcat輸出放在Activity的onCreate和onDestroy方法中,你開始時的事件順序是什麼 - >登錄 - >按home - >重新啓動? – 2010-08-02 18:21:31

+0

目前,它是「標準」,因爲我沒有在我的登錄活動中設置launchMode。但是,我確實沒有將歷史設定爲真實。 – Andrew 2010-08-02 18:39:26

+0

刪除noHistory似乎解決了我的問題 – Andrew 2010-08-02 18:42:22

回答

0

我沒有上的可取避免TabActivity使用的子活動評論。至於處理程序 - 如果您不打算嵌入視圖而不是活動,則佈局XML中的所有android:onclick類型處理程序設置將調用TabActivity上的方法。這是因爲他們轉到視圖'Context上的方法,這是通常最接近的包含活動。如果您想在不使用任何活動的情況下進一步拆分代碼,我相信您必須在設置完標籤內容視圖後使用findViewById調用,然後在代碼中手動綁定處理程序。

+0

這是我最好的猜測,我只是找不到任何像樣的例子。你知道任何你可以聯繫我嗎?我基本上看着一個huuuuge TabActivity文件?我計劃在完成時擁有大約10個左右的屏幕。感謝您的幫助 – Andrew 2010-08-02 18:41:06

+0

不幸的是,我不知道任何好的例子。如果你必須避免使用子活動,我建議設置單獨的類來保存每個標籤的邏輯。通過在TabActivity的'onCreate'中傳遞其標籤的頂部視圖來構建每一個視圖,並讓它們將自己綁定到它們需要的所有事件中。 – 2010-08-02 19:12:14

+0

我不*要求*不使用子活動,但如果它是實現TabActivity最有效的方式,那就是我想要做的。但它確實帶來了一些擔憂。例如,假設在視圖A上有一個啓動視圖B的按鈕,我可以在同一個選項卡中顯示視圖B嗎?當視圖A最終再次填充屏幕時,將不必重新加載所有數據?在一些地方我也使用startActivityForResult。如果沒有使用活動,這會讓我陷入困境,是的? – Andrew 2010-08-02 19:43:06

相關問題