Java Android硬件菜单按钮代码工作不正常!需要帮助吗

Java Android硬件菜单按钮代码工作不正常!需要帮助吗,java,android,eclipse,button,menu,Java,Android,Eclipse,Button,Menu,我喜欢这个网站,你们都很棒!但我还有一个问题: 在我的应用程序中,我有一个在整个屏幕上显示网站的网络视图,我制作了一个代码,通过按下手机的菜单按钮来显示菜单,我希望在这里发生两件事第一个菜单项返回应用程序的主屏幕,第二个菜单项退出应用程序或退出应用程序。 第一个问题: 按下菜单按钮后,将显示菜单。。。如果我再按一次,它会显示两个选项,如果我现在再按一次,两个项目都会显示三次,依此类推! 第二个问题: 在选择两个选项中的任何一个之后,什么都不会发生! 这是我的密码请告诉我我做错了什么! 谢谢 菜单

我喜欢这个网站,你们都很棒!但我还有一个问题: 在我的应用程序中,我有一个在整个屏幕上显示网站的网络视图,我制作了一个代码,通过按下手机的菜单按钮来显示菜单,我希望在这里发生两件事第一个菜单项返回应用程序的主屏幕,第二个菜单项退出应用程序或退出应用程序。 第一个问题: 按下菜单按钮后,将显示菜单。。。如果我再按一次,它会显示两个选项,如果我现在再按一次,两个项目都会显示三次,依此类推! 第二个问题: 在选择两个选项中的任何一个之后,什么都不会发生! 这是我的密码请告诉我我做错了什么! 谢谢

菜单xml:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menuToMenu"
android:title="Menu Principal"
/>
<item
android:id="@+id/menuToSalir"
android:title="Salir"
/>
</menu>
在我称之为菜单的地方:

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

    public boolean onOptionItemSelected(MenuItem item){
        switch (item.getItemId()){
        case R.id.menuToMenu:
            startActivity (new Intent("my.app.BACKTOMAIN"));
            return true;
        case R.id.menuToSalir:
            finish();
            System.exit(0);
            return true;
        }
        return false;
    }

要解决第一个问题,请尝试使用CreateOptions菜单(),而不是PrepareOptions菜单()


我不确定如何解决第二个问题,我通常都是用java创建菜单,而不是像您那样使用xml。

您正在调用
super.onCreateOptions菜单()
from
onPrepareOptions菜单()
。并且,在
onPrepareOptionsMenu()
中,您正在将相同的选项添加到菜单中。将onPrepareOptions菜单()重命名为onCreateOptions菜单(),它的性能可能会更好

此外:

  • 如果您认为
    my.app.BACKTOMAIN
    活动正在运行,您可能需要将
    FLAG\u activity\u REORDER\u添加到\u FRONT
    FLAG\u activity\u CLEAR\u TOP
    添加到
    Intent
  • 摆脱
    menuToSalir
    菜单选项。没有编写良好的Android应用程序会调用
    系统。退出(0)
    。用户通过按HOME(主页)按钮离开您的应用程序,这与他们在Web应用程序中可能遇到的情况没有什么不同

我发现了问题,它可以工作!我错过了

正确的方法是

public boolean onOptionsItemSelected(MenuItem item){

谢谢你的帮助Tim和Commonware

我遇到了这个问题。在我的例子中,我将活动屏幕的背景色设置为黑色。当菜单弹出时,它有一个透明的背景和黑色文本,所以我看不出它在工作。

你能给我解释一下,或者给出一个在java上编码的例子,或者我在哪里可以找到它。感谢@CommonsWave,我确实将onPrepareOptions功能表()更改为onCreateOptions功能表(),效果更好。我每次单击功能表按钮时,都会获得相同的功能表,但在另一个标志中,即“重新排序到”前面或“活动清除到”顶部。你能再给我解释一下吗?也许可以举个例子?thanks@zvzej:
Intent i=newintent(“my.app.BACKTOMAIN”);i、 设置标志(标志、活动、清除、顶部);星触觉(i)它给了我一个要解决的错误,它问我是否要为标志\u活动\u清除创建变量常量或fiel_TOP@zvzej:啊,对不起,那应该是
i.setFlags(Intent.FLAG\u ACTIVITY\u CLEAR\u TOP)。是的,该引号不会给出错误,但当我按下菜单选项时,它不会做任何事情。
public boolean onOptionItemSelected(MenuItem item){ 
public boolean onOptionsItemSelected(MenuItem item){