onPrepareOptionsMenu安卓应用

时间:2012-01-09 19:51:58

标签: android

我正在尝试使用onPrepareOptionsMenu,当我按下菜单时,它什么也没做!我哪里错了?

另外,我使用的是finish();命令对吗?当用户按下exit(menuX)时,我希望他们完全退出应用程序,而不是活动。

谢谢! :)

public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater getItnow = getMenuInflater();
getItnow.inflate(R.menu.main_menu, menu);
return true;
}

public boolean onPrepareOptionsMenu(MenuItem item){
    switch (item.getItemId()){
    case R.id.menuA:
        startActivity(new Intent("com.abc.example.A"));
        return true;
    case R.id.menuB:
        startActivity(new Intent("com.abc.example.B"));
        return true;
    case R.id.menuC:
        startActivity(new Intent("com.abc.example.C"));
        return true;
    case R.id.menuD:
        startActivity(new Intent("com.abc.example.D"));
    case R.id.menuX:
        finish();
    }
    return false;
}
}

2 个答案:

答案 0 :(得分:1)

当我创建选项菜单时,我通常使用以下两种方法:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        menu.add(0, 1, 0, "option text");
            .....
    }

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    if(item.getItemId() == 1)
    ...
}

另外,使用你的switch语句,你忘了放弃;对于每个选项(我注意到这主要是因为我因为做同样的事而臭名昭着)。

答案 1 :(得分:1)

首先,我宁愿使用onOptionsItemSelected,然后使用onPrepareOptionsMenu。因为据我了解你只想按它。只有第一行被改变才是一样的。

第二件事 - app退出。好吧,如果这个菜单在你的主要和第一个活动中,那么当你打电话给finish()时,这个活动就会被销毁(不完全是因为你不再看到它了),所以如果app已经没有了活动一切都被破坏了。

更高级的方法是使用指令android.os.Process.killProcess(android.os.Process.myPid());,它正在做的只是发送整个过程的终止信号。至于你的应用程序不会变得更大,我的意思是你将只有你的活动在这个过程中,而不是很好。希望它会有所帮助。