2010-12-04 111 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调用完成。