点击“后退”键时启动ContextMenu?

时间:2011-07-21 03:46:28

标签: android contextmenu back-button

我需要覆盖后退按钮才能启动上下文菜单。

我有

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    switch (keyCode)
    {
    case KeyEvent.KEYCODE_BACK :

        return true;
    }

    return super.onKeyDown(keyCode, event);
}


        @Override  
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {  
 super.onCreateContextMenu(menu, v, menuInfo);  
     menu.setHeaderTitle("Quit");  
     menu.add(0, v.getId(), 0, "Yes");   
     menu.add(0, v.getId(), 0, "No");   

 }  
    @Override  
    public boolean onContextItemSelected(MenuItem item) {  
            if(item.getTitle()=="Yes"){quit(0);}
            if(item.getTitle()=="No"){quit(1);}
        else {return false;}  
    return true;  
    }

如何在'case KeyEvent.KEYCODE_BACK:'中调用ContextMenu?'

5 个答案:

答案 0 :(得分:0)

我不确定,但我认为您无法在 Back Key 上打开 ContextMenu ,因为 ContextMenu 应该在特定的视图上打开。

但您可以在 Back-Key 上打开任何对话,请参阅下面的代码

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            //Your Dialog Code
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

答案 1 :(得分:0)

使用openContextMenu:您需要传递要打开上下文菜单的视图,但这应该有用。

答案 2 :(得分:0)

这将检测用户是否单击了后退按钮。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    // Checks if back key was clicked and if it was clicked only once
    // since multiple clicks could be configured in android for other functions
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0)
    {
        // Code to open contextmenu
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

This将提供有关使用View.openContextMenu()

的信息

答案 3 :(得分:0)

只需致电Activity.openOptionsMenu()即可打开菜单。

       @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    switch (keyCode)
    {
    case KeyEvent.KEYCODE_BACK :
        MyActivity.this.openOptionsMenu();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

希望这会对你有所帮助。

答案 4 :(得分:-1)

覆盖onBackPressed方法

@Override
public void onBackPressed() {
  //Your code here
}