2014-04-24 193 views
0

我的操作欄包含兩個選項卡(業務列表和業務地圖)。如果有人從列表中選擇我想隱藏標籤並顯示該商家的頁面。如果用戶退後,業務片段將彈出,並且應再次顯示選項卡。Android - 導航回選項卡片段

什麼是最好的方法來得到這個工作?到目前爲止,我有一個莫名其妙的遞歸循環,如果我彈出業務片段:(

因此,圖片顯示, 。導航模式,以標準打的返回鍵,並在BusinessListFragment的的onResume()我有這樣的:

ActionBar ab = mHostingActivity.getSupportActionBar(); 
    if (ab.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD) 
     ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

這是應該帶回的標籤,但應用程序與環凍結的標籤當然,我的代碼中有些奇怪的東西(我敢肯定我不會這麼做),或者Android在設置naviagtion模式時會做一些奇怪的事情嗎?

編輯:我瞭解到,簡單地將導航模式設置爲選項卡似乎實際上選擇第一個選項卡 - 我相信這將解釋遞歸。有趣!

回答

0

好了好這個花了一段時間來弄清楚,但希望這將有助於未來的Google:d

這似乎是最好的做法是永遠不會被從內部設置導航模式試圖隱藏/顯示選項卡的標籤片段的onResume/onPause或其中的任何地方。

因此,我在detail(business)片段的onResume()中將模式設置爲Standard。通常情況下,如果沒有更多層次的導航可以從細節片段中遍歷,則可以簡單地將模式設置回細節片段的onPause()中的製表符 - 考慮反向按下或向上按下。

但是在我的情況下,您可以單擊業務頁面內的元素來啓動另一個片段(使堆棧數爲3),這意味着我無法在onPause()中打開選項卡,並發現最佳解決方案是在onDetach()中做。這應該意味着只有在細節片段實際從堆棧彈出時纔會打開選項卡。

希望這個解決方案是準確的,我玩過很多想法,包括後臺堆棧監聽器和覆蓋onBackPressed,但對我來說這似乎是最好的選擇。