我创建了一个具有菜单的基本活动,此菜单将打开应用程序中的其他活动。

public class BaseActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    //Intent i = new Intent("com.app.Activity1");
    //startActivity(i);

     }

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.icon:     Intent i1 = new Intent("com.app.Activity1");
                            startActivity(i1);
                            break;
        case R.id.text:     Intent i2 = new Intent("com.app.Activity2");
                            startActivity(i2);
                            break;
        case R.id.icontext: Intent i3 = new Intent("com.app.Activity3");
                            startActivity(i2);
                            break;
    }
    return true;
}
}

所有活动都扩展了此基本活动,因此当您按下菜单按钮时,菜单将弹出,您可以选择一个活动。
但是,假设我使用菜单转到活动A。一旦进入活动A,我可以再次使用菜单转到活动A。我可以这样做X次,但现在后退按钮将返回相同的活动X次。
如何判断活动是否已在运行,以便用户无法继续打开同一活动?
或者,您建议我在活动a中禁用菜单项一次吗?
谢谢你的意见。抱歉,如果这看起来像一个小问题。

最佳答案

有一个简单的解决办法。您想禁用onPrepareOptionsMenu()中当前活动的菜单项,如下所示:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    // Determine what activity I am and find the menu item for that activity
    MenuItem menuItem = null;
    if (getClass().equals(com.app.Activity1.class)) {
        menuItem = menu.findItem(R.id.icon);
    } else if (getClass().equals(com.app.Activity2.class)) {
        menuItem = menu.findItem(R.id.text);
    } else if (getClass().equals(com.app.Activity3.class)) {
        menuItem = menu.findItem(R.id.icontext);
    }
    // Disable this menu item
    if (menuItem != null) {
        menuItem.setEnabled(false); // Make it non-selectable (even with shortcut)
        menuItem.setVisible(false); // Make it non-visible
    }
    return true;
}

08-04 04:08