Android硬件菜单按钮代码无法正常工作!需要帮忙

时间:2011-05-20 21:39:44

标签: java android eclipse button menu

我喜欢这个网站你们所有人都很棒!但这是我的另一个问题: 在我的应用程序中,我有一个webview,在整个屏幕上显示一个网站,我已经制作了一个代码来显示一个菜单,通过按下手机的菜单按钮从哪里我想要2件事发生第一个菜单项回到应用程序的主屏幕,第二个菜单项退出应用程序或退出应用程序。 第一个问题: 按下菜单按钮后,它显示菜单...如果我再次按下它会显示两个选项两次,如果我再次按它,​​现在两个项目显示3次,依此类推! 第二个问题: 选择这两个选择中的任何一个都没有任何反应 这是我的代码请告诉我我做错了什么! 感谢

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>

Backtomain.java

import android.app.Activity;
import android.os.Bundle;

public class Backtomain extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

我在哪里打电话给菜单:

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;
    }

4 个答案:

答案 0 :(得分:1)

您正在super.onCreateOptionsMenu()致电onPrepareOptionsMenu()。而且,您正在onPrepareOptionsMenu()向菜单中添加相同的选项。将onPrepareOptionsMenu()重命名为onCreateOptionsMenu(),它可能会表现得更好。

此外:

  • 如果您认为my.app.BACKTOMAIN活动正在运行,您可能希望将FLAG_ACTIVITY_REORDER_TO_FRONTFLAG_ACTIVITY_CLEAR_TOP添加到Intent
  • 摆脱menuToSalir菜单选项。没有编写良好的Android应用程序会调用System.exit(0)。用户通过按HOME按钮离开您的应用程序,与Web应用程序中的不同。

答案 1 :(得分:0)

要解决您的第一个问题,请尝试onCreateOptionsMenu(),而不是onPrepareOptionsMenu()。

我不肯定如何修复第二个问题,我通常用java创建菜单,而不是像你一样使用xml。

答案 2 :(得分:0)

我发现它有问题!我错过了......的“s”。

public boolean onOptionItemSelected(MenuItem item){ 

正确的方法是

public boolean onOptionsItemSelected(MenuItem item){

感谢Tim和CommonsWare的帮助

答案 3 :(得分:0)

我遇到了这个问题。在我的情况下,我已将活动屏幕的背景颜色设置为黑色。当菜单弹出时,它有一个透明的背景和黑色文字,所以我没有看到它工作。