2010-03-16 89 views
5

我開始Android Market中使用此代碼搜索同類產品:顯示應用程序主菜單/主屏幕後返回到應用程序時,爲經由我的應用程序啓動的外部活動/意圖

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 
c.startActivity(intent); 

這工作正常用於展示類似的產品。不過,如果我在市場上點擊主頁按鈕,當我重新打開應用程序時,它仍顯示市場結果。我想在這種情況下進入主菜單。

有沒有解決方案?

回答

15

對不起,FLAG_ACTIVITY_NO_HISTORY可能不是正確的解決方案。注意它的語義 - 活動只是不出現在歷史中。因此,如果用戶點擊其中的一件事物來進行下一個活動,那麼按下後,它們將不會返回到前一個(但是之前的那個)。這很少是你想要的。

更糟糕的是,如果他們從市場活動中選擇第二個活動,按回家並返回到您的應用程序,那麼第二個活動仍然存在(它保持在歷史中)。

這種情況的正確標誌是FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

+0

它幫了我很多。爲你的努力+1。 – Vivek 2012-01-30 21:08:16

0

這不是問題。

當您在Market應用程序上按回家時,它並未關閉,只是暫停。所以當你再次打開它時,你會恢復它。檢查Android activity's lifecycle

+0

是的,這是一個問題,因爲這不是用戶期望的行爲。你看如何:http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET – Fernwilter 2012-02-24 14:11:27

10

如果將FLAG_ACTIVITY_NO_HISTORY標誌添加到意圖中,它將不會保留在歷史堆棧上。當用戶導航返回到您的應用程序時,將顯示在您啓動市場之前可見的最後一項活動。

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("http://market.android.com/search?q=pub:\"some txt\"")); 

c.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
c.startActivity(intent); 

編輯:hackbod是正確的:FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET是你需要的東西更適合。

+0

這工作。非常感謝你 – 2010-03-16 12:14:17

相關問題