首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onPrepareOptionsMenu安卓应用

onPrepareOptionsMenu安卓应用
EN

Stack Overflow用户
提问于 2012-01-10 03:51:58
回答 2查看 4.6K关注 0票数 1

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

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

谢谢!:)

代码语言:javascript
复制
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;
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-10 04:08:47

首先,我更喜欢使用onOptionsItemSelected而不是onPrepareOptionsMenu。因为据我所知你只是想按下它。这是完全相同的,只是第一行被改变了。

第二件事-应用程序退出。如果这个菜单在你的主activity和第一个activity中,那么当你调用finish()时,这个activity就会被销毁(不完全是这样,但问题是你再也看不到它了),所以如果app没有更多的activity,所有的东西都会被销毁。

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

票数 1
EN

Stack Overflow用户

发布于 2012-01-10 04:07:48

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

代码语言:javascript
复制
    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        menu.add(0, 1, 0, "option text");
            .....
    }

代码语言:javascript
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    if(item.getItemId() == 1)
    ...
}

此外,在switch语句中,您忘记了为每个选项放入break;(我之所以注意到这一点,主要是因为我以做同样的事情而臭名昭著)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8794292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档