拦截Android菜单按钮

时间:2011-07-12 10:23:13

标签: android

我有一个应用,我想在用户按下菜单按钮时显示我自己的菜单活动。我正在使用onCreateOptionsMenu方法来启动我的活动,返回false以便不显示任何菜单。这是我的代码:

Intent intentMenu = new Intent(this, ActivityMenu.class);
startActivityForResult(intentMenu, 0);
return false;

这样可行,但仅在第一次按下菜单按钮时才有效。我知道这种方法只被调用一次。每次用户按下菜单按钮时,如何才能调用它?或者我应该采取不同的方法?

2 个答案:

答案 0 :(得分:5)

不要使用onCreateOptionsMenu(),错误的地方。以下是通过覆盖Activity中的onKeyDOwn()方法来实现的:

@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_MENU || keyCode == KeyEvent.KEYCODE_BACK) {
        startActivityForResult(new Intent(this, ActivityMenu.class), 0);

        return true;
    }

    return super.onKeyDown( keyCode, event );
}

答案 1 :(得分:0)

创建菜单类 看起来像这样:

public class GlobalMenu extends Activity

{

public boolean onCreateOptionsMenu(Menu menu) 

{

       MenuInflater inflater = getMenuInflater();

       inflater.inflate(R.menu.global_menu, menu);

       return true;

}

public boolean onOptionsItemSelected(MenuItem item)

{

    switch(item.getItemId())

    {

        case R.id.GlobalSettings:

                           // Write code to perform action
            break;

        case R.id.Globalrefresh:

                           // Write code to perform action
            break;

        case R.id.Globalexit:

                           // Write code to perform action
            break;

        default:

    }

    return true;

}



}

现在,当您单击菜单按钮时,从您不会显示菜单的主Activity中扩展此类。

创建.xml文件如下: