Запустить ContextMenu, когда нажата клавиша «назад»? - PullRequest
0 голосов
/ 21 июля 2011

Мне нужно переопределить кнопку возврата, чтобы запустить контекстное меню.

У меня есть

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

Как я могу вызвать ContextMenu изнутри 'case KeyEvent.KEYCODE_BACK:'?

Ответы [ 5 ]

0 голосов
/ 21 июля 2011

Просто позвоните 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);
}

Надеюсь, это поможет вам.

0 голосов
/ 21 июля 2011

Это обнаружит, если пользователь нажал кнопку «Назад».

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

Это даст информацию об использовании View.openContextMenu().

0 голосов
/ 21 июля 2011

Я не уверен, но я думаю, что вы не можете открыть ContextMenu на Клавишу возврата , потому что ContextMenu должно быть открыто для определенного просмотра.

Но вы можете открыть любой Диалог на Клавишу назад см. Ниже код

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            //Your Dialog Code
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
0 голосов
/ 21 июля 2011

Использовать openContextMenu : вам нужно будет передать представление, которое вы хотите открыть контекстное меню, но это должно работать.

0 голосов
/ 21 июля 2011

Переопределить метод onBackPressed

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