I am developing an application that when the button is pressed, it opens a dialog with OK and Cancel buttons.
It works fine.
When the user presses the back b
If you are using a DialogFragment, from what I can tell the right way to do it is to override onCancel()
I noticed setOnCancelListener
does not work, and setOnKeyListener
works, but for me has the fun side effect that it swallows all keys if your dialog has an edit text.
it is because when your Dialog opens then your window navigate its focused to Dialog.
So now you have to handle key
on your Dialog.
Sounds like you want to set the OnCancelListener when you create the Dialog. It looks like this:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//do whatever you want the back key to do
}
});
dialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
dialog.dismiss();
}
return true;
}
});
Try this
new AlertDialog.Builder(this).setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
Logger.d(TAG, "--------- Do Something -----------");
return true;
}
return false;
}
})
You need to override OnCancel
method. This method calls on Back Key press. Here's code which works perfect to me.
AlertDialog alertDialog;
alertDialog.setOnCancelListener(new OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
// TODO Auto-generated method stub
dialog.dismiss();
}
});
Hope this will help you, and accept it if it is helpful to you.
Thanks..