2011-02-02 113 views
0

我有幾個活動可以通過下面的菜單繼承基本活動。Android - 作爲選項卡的菜單項

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     Intent myIntent; 
     switch(item.getItemId()) { 
     case R.id.home: 
      myIntent = new Intent(this, HomeActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     case R.id.map: 
      myIntent = new Intent(this, GoogleMapsActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     case R.id.art: 
      myIntent = new Intent(this, ArtActivity.class); 
      startActivityForResult(myIntent, 0); 
      return true; 
     ... 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

這很好,但選擇菜單項會啓動該活動的新實例。 pause()和resume()如何與setResult()一起使用,以便在給定時間只有一個或更少的每個活動的實例?

爲了更具體地說明,當用戶回到先前訪問的活動時,它應該處於與它離開它相同的狀態(如標籤)。

回答

0

您可以通過將launchMode的活動配置爲singleTask來實現此目的。但是,正如文檔指出的那樣,這可能會導致用戶意外的行爲。當用戶回擊時,他們希望被帶回到之前的屏幕上。如果您使用此模式,請確保您徹底測試後端功能。

+0

首先,感謝您的回覆開始「活動」!這更接近我試圖完成的目標。我對這個行爲有一個問題。如果我轉到具有應用程序主要意圖的活動(從應用程序執行開始),然後返回到以前打開的活動,它仍然創建一個新實例(或至少回顧onCreate()。它不會如果我在非主要活動選項卡之間導航,請執行此操作。這種情況會發生什麼原因? – 2011-02-02 20:54:27

+0

它與我的onOptionsItemSelected()的實現方式有關嗎? – 2011-02-02 21:00:10

0

使用.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP)到你的意圖,只是通過startActivity