2015-05-19 293 views
2

我正在嘗試使用向上導航模式,並在使用片段和活動時遇到問題。假設我有活動A並且該活動包含片段a。現在我單擊片段a中的某個片段,並且片段b發生片段b替換,並將a放入後端堆棧中。 「向上」箭頭現在出現在我的工具欄中。這很好。現在我點擊片段b中的內容並啓動活動B. A是B的父項。現在,B有一個向上箭頭,我希望當我觸摸它時,我會到達頂部,即完成活動B和A的後退堆棧將被彈出,所以我們結束活動A包含片段a和空回棧。向上導航的片段和活動

這裏我的問題是,當在B中按下,B完成但A仍然顯示片段b。有沒有什麼辦法可以讓A不會恢復其onActivityResult或類似的東西的片段後退狀態,所以片段B從不會顯示在從B開始的動作上?

我試過的是在啓動B和彈出A的片段backstack onActivityResult時使用startActivityForResult,但是隨後b在彈出堆棧之前暫時顯示。我只想要一個沒有恢復它,如果達在按下B.國家片段

Intended up behaviour

編輯: 我現在使用的最多的導航模式是,在我的清單我定義了一個作爲B的父級和活動BI中有一個工具欄,我使用setDisplayHomeAsUpEnabled將其設置爲supportActionBar。

+0

而不是在onActivityResult中嘗試在調用startActivity(B)之後執行它。 – GuilhE

+1

您是否嘗試過使用[NavUtils](http://developer.android.com/reference/android/support/v4/app/NavUtils.html)並在您的清單中聲明父級活動?我認爲您可以使用這些功能正確地返回到您的家長活動,一旦您按下選項菜單中的向上按鈕,應該重建該活動。你沒有詳細說明你用來執行向上導航的方法。 –

+0

感謝您的評論傢伙。 @GuilhE:這種方法的問題是,我想在用戶按下後或在B之間做出區別。 – hordurh

回答

1

我在清單中將我的活動定義爲「singleTop」。如果你刪除了向上按鈕導致任務被重新創建,這正是我想要的。

+0

你應該將你的答案標記爲已接受,以便其他人知道問題已經解決。 –

+0

我必須等一天才能接受我自己的答案! – hordurh

0

編輯:我現在使用的最多的導航模式是,在 我的清單我定義了一個爲B的母公司和活動B我有一個 工具欄,我設置爲與 一個supportActionBar setDisplayHomeAsUpEnabled。

說,我的建議是雨後春筍般冒出A(B)去B.

當你打電話時navigateUpFromSameTask它完成當前的活動,並開始(或恢復)相應的父活動。如果目標父活動在任務的後退堆棧中,則將其提前。這就是爲什麼你正在經歷這種行爲。

+1

如果我正確地理解你,你建議當我打電話給startActivity(B)時,我應該彈出片段的堆棧A.從理論上講,這是有道理的,因爲A會在返回時變得乾淨,但這有兩個問題。首先,我無法在onSaveInstanceState之後創建fragmentTransaction,其次,如果用戶按下了物理後退按鈕,我希望他在返回到活動A時以A(b)結束。但是,我感謝您的建議,但我沒有downvote you :) – hordurh