簡體   English   中英

Android:多個視圖,深層導航,一個Activity。 什么是最好的處理方式?

[英]Android: Multiple views, deep navigation, one Activity. What is the best way to handle?

我正在尋找在Android應用程序中重現UITabBarController中 iPhone UiNavigationController行為的最佳方法。

我正在使用這個Android應用程序,我有一個TabActivity和4個標簽。 我已經經歷了很多關於活動和標簽使用的帖子,以及如何將活動用於所有事情並不是一個好主意,這看起來很公平。 我決定在每個選項卡上使用一個Activity,因為它在我的應用程序中是有意義的。

但是,在其中一個活動中,我有一個深度導航樹,其中包含多個分支以及最多12個不同的視圖,用戶可以通過這些視圖。

問題是:Android控制應用程序內部的活動導航,如果單擊后退按鈕,它將轉到上一個,但如果我瀏覽視圖,使用一個活動,然后單擊返回,它只是完成它。 那么如何在Activity中的視圖之間獲得平滑的導航行為?

我使用帶有FragmentActivityTabActivity作為每個選項卡實現了這一點。 利用Fragments API,您可以像使用12種不同的活動一樣組織代碼,實際上每個選項卡仍然只使用1。 Fragment的框架將處理后退按鍵,以顯示先前的片段而不是關閉整個活動。

這種方法存在一些問題,例如,沒有MapFragment ,但可以在SOF上找到解決方法。

如果您的最低SDK版本低於3.0,則需要Android支持包。

我對UiNavigationViewController ,但我想你想要在不同的視圖之間導航。 在使用TabActivity ,每個選項卡都應加載到單獨的Activity
但是既然你想把它分支出來,使用那么多活動並不是一個完美的解決方案,也不是ActivityGroup 根據我的觀點(我遇到類似的問題),更好的解決方案是將主要或根選項卡加載到單獨的Activity中,但對於它們的分支,使用ViewFlipper,它會翻轉Views。 因此可以翻轉整個布局(視圖的子類)。
翻轉兩個以上的視圖時可能遇到一些問題(正如人們所說,雖然我從來沒有遇到任何問題)。 因此,在這種情況下,您可以使用layout.setVisibility(View.GONE)來隱藏布局,只需使用View.VISIBLE將其View.VISIBLE為下一個視圖。
關於后退按鈕的問題,您需要將最后使用的View或Activity存儲到變量中,並且在onBackPressed()的覆蓋中,只需要調用它們。

可能有比這更好的解決方案,而不是我記得,但是,這是我能想到的最簡單的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM