2010-12-04 90 views
0

我想我理解Android上的Activity生命週期,但我仍然無法確定爲什麼會發生下面的情況。活動之間共享的Android菜單(不需要)

  • 登錄活動 - 登錄屏幕
  • 主要業務 - 主要應用接口

在登錄活動,我連接到服務來驗證登錄。如果密碼正確,我切換到主要活動使用:

Intent intent = new Intent(this, MainActivity.class); 
startActivity(intent); 

登錄活動中沒有選項菜單。 我在主要業務的選項菜單,我和膨脹:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.option, menu); 
    return true; 
} 

到目前爲止好。但我希望用戶能夠註銷並返回到登錄屏幕。 因此,在主要活動我在菜單中的選項,允許註銷:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
    case R.id.menuReset: 
     getModel().deleteCredentials // stuff to logout from my service 
     startActivity(new Intent(this, LoginActivity.class)); 
     finish(); 
     return true; 
    } 
} 

如果我按該菜單按鈕,應用程序再次顯示登錄活動。但是如果我按下菜單鍵,即使應用程序不可見,應用程序也會顯示來自主要活動的菜單。此外,如果我回到主屏幕(按HOME)並在一段時間後回到我的活動,應用程序將顯示登錄活動,但如果按下MENU鍵,主應用程序菜單仍會顯示。

如何從登錄活動中刪除菜單?

感謝

+0

它可能是繼承的結果嗎? (例如`class Login extends Main`)。 – 2010-12-04 13:56:03

+0

這是一個聰明的問題。然而,這裏是我的類結構: - MyAbstractActivity(基類),LoginActivity擴展MyAbstractActivity,MainActivity擴展MyAbstractActivity。我膨脹MainActivity類中的菜單。 – Marco83 2010-12-06 10:55:01

回答

1

Oooooops,我的壞。當我正在處理另一段代碼時,充氣菜單代碼被意外複製並粘貼到登錄活動中:)

對不起對此 無論如何感謝您的支持!

0

我覺得你並不需要調用startActivity從您的MainActivity去登錄活動。因爲活動鏈,將足夠從您的MainActivity調用完成。