2012-11-15 103 views
3

我有4個活動:清除上後退按鈕堆棧活性按壓

Menu -> screen 1 
Menu items -> screen 2 
Detailed View -> screen 3 
Ordered item -> screen 4 

在功能活性(屏幕1)I具有的onclick它進入的MenuItems活性的按鈕(scrren 2是列表視圖) ,在列表中的任何項目點擊查看它相應的項目詳細視圖在這個活動(屏幕3)我有一個按鈕稱爲有序視圖,onlclick它會去有序的項目(屏幕4),在這個視圖4 I有一個按鈕,它會去屏幕2.

這是流程

Screen 1 ->screen 2->screen 3->screen 4->screen 2 

問題:現在當我在屏幕2上點擊回到基本流程之後,它回到屏幕4並且再次點擊它回到屏幕3,這導致用戶點擊返回按鈕n自從活動已經存在於堆棧中。

如何處理這個我的意思是後退按鈕導航。

我曾嘗試在意圖中使用標誌,但它不適合我。

我也提到這個

  1. Android: Remove a series of Activites on clicking back

  2. On logout, clear Activity history stack, preventing "back" button from opening logged-in-only Activites

編輯我得到了答案: 這樣幾個朋友都在這裏,我使用回答這個 我ntent.FLAG_ACTIVITY_CLEAR_TOP

所以

screen 1->screen 2->screen 3-> screen 4->screen 2 

所以在屏幕4我必須設置該標誌,這樣它會清除所有上述活動的活動。

+0

你是否嘗試覆蓋'onBackPressed()'? – Pallavi

+0

@Pallavi你的意思是在這個方法中調用意圖? – Goofy

+0

我們是否猜測你試過的代碼是什麼樣的? – Simon

回答

6
Intent intent= new Intent(this, screen 1.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

+1,並感謝這樣一個美好的答案 – Rohit

1

您必須在每個意圖之後使用finish(),以便此活動將關閉。

您可以從4活動到2活動意圖功能。之後使用完成。

+0

正確,但有一個概率在那個假設中 screen 1-> screen 2-> screen 3->如果我每次調用finish() ,然後形成屏幕3,如果我點擊它應該去屏幕2,而不是從應用程序退出,因爲將不會有堆棧中的活動。 – Goofy

+0

http://nanostuffs.com/Blog/?p=607 – Nithinlal

1

你想要做的是設置屏幕2在manifest中有launchMode singleTop。這確保了一次只能在堆棧中執行其中一項活動。你也想在你的意圖中設置清晰的頂部標誌。

Intent a = new Intent(this,A.class); 
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(a); 
+0

嘿,你能解釋一下這會做什麼嗎? – Goofy

+0

清除頂部標記將清除您要啓動的活動之上的活動。 –

0

,你必須使用結束()每一個意圖後,所以這個活動將接近。

您可以從4活動到2活動意圖功能。之後使用完成。

http://nanostuffs.com/Blog/?p=607

u必須檢查該鏈接的鏈接使用爲標籤主要活動子活動。