2013-02-07 81 views
2

我想要編程主頁按鈕,因此它將刪除除堆棧之外的所有Activities堆棧。我做到了,就像在這裏:How to finish every activity on the stack except the first in Android刪除除第一個以外的所有活動

public boolean onOptionsItemSelected(MenuItem item) { 
    int itemId = item.getItemId(); 
    switch (itemId) { 
    case android.R.id.home: 
     Intent intent = new Intent(this, AMainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
     break; 
... 

但這種方式不適合我,因爲它消除所有Activities(包括第一次),然後重新啓動的第一個。例如 - 如果我檢查用戶密碼onCreate(),他會再次被問到。 如何從堆棧中刪除所有Activities,但第一個不會被「觸摸」?

回答

1

將以下屬性添加到您的manifest.xml中AMainActivity的Activity標記中。

android:launchMode="singleTop" 
0

您可以在清單中的活動聲明中使用ExcludeFromRecent = "true"標誌,您不希望它在堆棧中。

2

是,根據Intent.FLAG_ACTIVITY_CLEAR_TOP文檔:

活性B在上面的例子中的當前運行的實例將或者接收新的意圖你開始在這裏其onNewIntent()方法,或爲自己完成並重新啓動新的意圖。如果它已宣佈其啓動模式爲「多個」(默認),並且您沒有將FLAG_ACTIVITY_SINGLE_TOP設置爲同一意圖,那麼它將被完成並重新創建;適用於所有其他啓動模式,或者如果設置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將傳遞到當前實例的onNewIntent()。

因此,使用其他Intent標誌:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

而且你的活動不應該被重建。相反,它只會通過致電onNewIntent()獲得新的意向。

相關問題