2013-07-19 33 views
0

我有3項活動。從第三項活動中,我需要在單擊GUI按鈕時回到第一項活動。我知道我可以點擊「物理」後退按鈕2次,但這不是一個選項。那麼,有什麼方法可以顯示第一個活動,而不需要創建一個新的實例?我可以將第一個活動的實例傳遞給第三個活動,沒有問題。如何導航到特定活動?

請幫忙

+1

使用導航抽屜與動作欄組合。 http://developer.android.com/design/patterns/navigation.html – Raghunandan

回答

1

請按照您的意圖使用FLAG_ACTIVITY_CLEAR_TOP

從文檔:

例如,考慮一個由任務的活動:A,B,C,D,如果d用解析爲活動B的成分的意圖調用startActivity() ,則C和d將完成和B接收給定的意圖,導致堆棧現在是:A,B.

要使用:

Intent intent = new Intent(getBaseContext(), FirstActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

我應該在哪個類中添加這個?在第一次活動還是第三次?我添加到第三個,似乎不起作用 –

+0

第三個活動,指向'FirstActivity.class' – nickaknudson

+0

該文檔準確地解釋了您正在嘗試執行的操作(請參閱編輯)。如果它不能正常工作,你必須正確地做其他事情。 – nickaknudson

0
Intent intent = new Intent(src_ctxt, dest.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
src_ctxt.startActivity(intent); 

這應該這樣做

0

我認爲你需要讓你的活動B singleInstance,如果它已經創造你不想再創造,這是launch mode of the activity可以在清單的Android定義:launchMode定義如何活動將立即展開。

你的情況採用Android:launchMode = 「singleInstance」

您可以使用標誌Intent.FLAG_ACTIVITY_NEW_TASK。如果活動已經在運行,它會將其放在前面,而不是創建新的活動。

+0

「您可以使用標誌Intent.FLAG_ACTIVITY_NEW_TASK ...」不是事實...;) – Trinimon

+0

此標誌將使活動成爲新任務的開始。否則你也可以使用FLAG_ACTIVITY_SINGLE_TOP,如果它在歷史堆棧中,它將加載活動。 –