2010-04-05 199 views
0

在我的應用程序中,我有幾個活動,主屏幕有4個按鈕,每個按鈕開始一個不同的活動。所以其中之一就是搜索活動,一旦搜索它就會顯示結果活動。這一結果的活動可以從其他活動來達到,所以一般是這樣的:現在關於活動的生命週期

Main activity -> Search activity -> Result activity 

Main acitivty -> someother activity -> Result activity 

,如果我已經達到這個結果的活動,並按回一次或兩次,並且後按Home鍵,它會顯示主屏幕。但是,如果我想通過按住主頁按鈕並單擊我的應用程序返回到我的應用程序,它將始終返回到結果活動,無論哪個活動是我使用的最後一個活動。如果我再次按下,它會將我帶回主屏幕。

如果我再試一次,它會再次帶我到結果活動。避免這種情況的唯一方法是通過點擊應用程序的圖標啓動應用程序。這將我帶到了我正在使用的最後一個活動,它記住了狀態,所以如果我再次按下它,它不會將我帶到主屏幕,而是將它帶到它之前的活動。爲了說明這一點:

Main activity -> Search activity -> result activity --back--> Search activity --Home Button--> Home Screen --Hold Home and select the app --> Result activity --back--> Home Screen 

--Click application icon--> Search activity --back--> Main activity 

這種情況發生的另一件事是,如果我按在結果的活動,而主頁按鈕,通過點擊圖標啓動應用程序,它會帶我去活動之前的結果提供一個。

這是怎麼發生的?任何解決方法?

+0

你是如何啓動你的活動?您在意圖中使用的任何特定標誌? – 2010-04-05 17:44:16

+0

是的,我添加了一個標誌來啓動結果活動,並且我也傳遞了一些數據。像這樣:Intent intent = new Intent(this,Result.class); intent.putExtra(「RESULT」,aString); intent.addFlags(R.id.flag_search); startActivity(意向); – 2010-04-05 17:48:29

+0

看着它,intent.addFlags(R.id.flag_search)造成這種情況,通過註釋掉該行或使用任何int而不是R.id.flag_search來解決該問題。嗯,現在爲什麼我不能在那裏存儲我的旗幟?我應該使用Static類來存儲不同的標誌嗎? – 2010-04-05 18:15:26

回答

2

它看起來好像您的intent.addFlags使用您自己的「自定義」標誌爲您的新活動(R.id.flag_search)發送值?我不確定這是支持或標誌和活動的預期用途。這些旗幟記錄在這裏:

http://developer.android.com/intl/de/reference/android/content/Intent.html#setFlags%28int%29

+0

謝謝!這是問題。我想我必須用另一種方法來區分我的活動。那麼我能想到的唯一方法就是使用Intent.putExtra,或者有另一種方法嗎? – 2010-04-05 18:19:08

+0

我相信Intent.putExtra是所有活動間數據發送需求的方式。祝你好運! – mikeplate 2010-04-06 15:25:02

0

alwaysRetainTaskState設置爲true。

+0

這是否與所需的*相反*?此外,文檔中還提到「此屬性僅對任務的根活動有意義;對於所有其他活動,該屬性將被忽略。」 – 2010-04-05 17:41:55

+0

反正我也試過了,但同樣的事情發生了。 – 2010-04-05 17:45:17