Estou desenvolvendo um aplicativo que, quando o botão é pressionado, abre uma caixa de diálogo com os botões OK e Cancelar.
Funciona bem.
Quando o usuário pressiona o botão Voltar, estou lidando com isso da seguinte maneira
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Mas o método acima não é chamado. Como posso lidar com isso?
Respostas:
fonte
Dialog
;finish()
cuida disso já. Além disso, este método provavelmente deve retornarfalse
para ser capaz de capturar eventos importantes em outro lugar&& event.getAction() == KeyEvent.ACTION_UP
à resposta. Sem ele, o bloco de código será executado duas vezes. (Tecle ABAIXO e tecle ACIMA). Neste exemplo, não é tão importante, mas para outras ações além de terminar (), pode ser muito importante.dialog.dismiss()
ocorrerá um vazamento de memória.finish()
edialog.dismiss()
deve ser alternado no código acima.Parece que você deseja definir o OnCancelListener ao criar a caixa de diálogo. Se parece com isso:
fonte
Você precisa substituir o
OnCancel
método. Este método chama a tecla Voltar. Aqui está o código que funciona perfeitamente para mim.Espero que isso ajude você e aceite-o se for útil para você.
Obrigado..
fonte
Tente isto
fonte
Se você estiver usando um DialogFragment, pelo que posso dizer que a maneira certa de fazer isso é sobrescrever onCancel ()
Percebi
setOnCancelListener
que não funciona esetOnKeyListener
funciona, mas para mim tem o efeito colateral divertido de engolir todas as teclas se sua caixa de diálogo tiver um texto de edição.fonte
é porque quando sua caixa de diálogo é aberta, sua janela é direcionada para a caixa de diálogo. Então agora você tem que lidar
key
com o seu Diálogo.fonte
key
com o Diálogo.Substitua o método
onBackPressed()
em sua própria caixa de diálogo e use-o em seu código:Usar:
fonte
Este código funciona:
fonte