2011-05-14 85 views
4

我有一系列活動A,B,C,完成後需要將新活動Y推送到我的家庭活動中。任務堆棧應該如下所示。Android推送新活動,同時清除其他活動

  • ħ
  • H->甲
  • H-> A-> B
  • H-> A-> B->Ç
  • H->ý

我需要後退按鈕能夠從C返回到B或B返回到A,但是C完成後我需要去使Y成爲活動任務。來自Y的「回」需要回到家(H)。

謝謝。

回答

1

傑米,現在做Android的東西?多麼可怕的想法!無論如何,finish()是你的朋友,當涉及到從堆棧中刪除活動。您可以多次調用它以彈出堆棧中的多個活動。

或者,您也可以通過在您的意圖中傳遞FLAG_ACTIVITY_CLEAR_TOP標誌來擦除整個堆棧(但它聽起來像要保留H,所以這可能不是明智的選擇)。

順便說一句,我還沒有玩過的一件事是FLAG_ACTIVITY_NEW_TASK,但這可能適用於你的情況。在開始之前先通過A。儘管如此,這可能對你來說完全沒有用處,所以只是稍微嘗試一下。

編輯:玩了一下,多次調用finish()實際上並不像預期的那樣工作。我通過在FLAG_ACTIVITY_CLEAR_TOP開始H,然後在Y之後立即開始工作(即在一個函數中調用兩個startActivity)。

+0

但是,如何獲得A和B?對於C,getParent()爲空。如果B和C可能是子活動?我想過讓A和B保持全局裁判,但是我的左手抓住一支鉛筆並刺傷了我​​的右手。另外,我現在正在流血。 (嗨!是的,我正在做Android的東西,雖然我去年得到的可憐的機器人大多未被使用,很多iOS開發,沒有太多的機器人。) – jamie 2011-05-14 06:51:47

2

你可以啓動一個活動H與國旗FLAG_ACTIVITY_CLEAR_TOP。這將稱爲活動H的onNewIntent()方法。您可以在此目的中設置適當的附加項並使用它們啓動Activity Y

+0

我認爲這將是「正確」的方式來做到這一點,當EboMikes方法的士氣暴跌時,我可能會嘗試它。然而,它的上午4點和他的想法奏效了,所以它可能要等到上午=) – jamie 2011-05-16 11:18:49