2012-10-15 22 views
2

假設我有4個活動,A,B,C和D.每個人都有一個按鈕,A開始B,B開始C,並且C開始D.讓我們來說說活動B,裏面有一個動態列表視圖,裏面填充了活動A提供的信息。當我從B中選擇一個項目時,它啓動C,當我按下「後退」按鈕時,我看到活動B與狀態I離開它(動態項目和滾動狀態)。Android - 通過Intent.FLAG_ACTIVITY_CLEAR_TOP回到特定活動,保持狀態

現在我想要的是,在活動D上有一個按鈕,我想通過保持其狀態(項目數據和滾動位置)回到B,就好像我在C上並按下後退按鈕。

到目前爲止,我發現的是,我的意圖是從D回到B,我應該使用「FLAG_ACTIVITY_CLEAR_TOP」作爲intent標誌。

任何想法?謝謝。

回答

2

你可以通過startActivityForResult活動c開始d(意向意圖,詮釋requestCode)。當D以onActivityResult(int requestCode,int resultCode,Intent data)中的活動C中的指定結果結束時,只需調用finish();完成活動C. 記得設置導致的活動d,當你想通過

setResult(Activity.RESULT_OK, myIntent); //or any other result or intent 
+0

我想過這樣的事情,但在真實的情況下,在B和D之間,我有不止一項活動。我想我可以將您的解決方案應用於B和D之間的所有活動,但我很想知道是否有另一種方法可以做到這一點。 – safaksam

+0

如果你有更多的活動,我認爲這不是一個好的解決方案。您可以嘗試添加標誌,如FLAG_ACTIVITY_BROUGHT_TO_FRONT或FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY。祝你好運。 – Agata

+0

我確實喜歡你說過,我之間的所有活動都是如此,它對我很有幫助。我擔心之間的活動之間可以看到之前完成,但它是非常快,這就像移動一個活動到另一個,你真的看不到之間的活動。謝謝。 – safaksam

0

附加代碼這樣的按鈕C click事件在活動Ç

Intent intent=new Intent(CActivity.this,DActivity.class); 
startActivity(intent); 
CActivity.this.finish(); 
+0

回到活動B,而與此代碼,用戶將無法再回到C來自d與後退按鈕,對嗎?我想保留這個功能。 – safaksam