How would I override a Dialog
\'s onBackPressed
to close the dialog as well as calling finish()
on the Activity
it is loca
I finally added a key listener to my dialog to listen to the Back key.
Not as elegant as overriding onBackPressed()
but it works.
Here is the code:
dlgDetails = new AlertDialog.Builder(this)
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
dialog.cancel();
showDialog(DIALOG_MENU);
return true;
}
return false;
}
})
//(Rest of the .stuff ...)
You can use setOnCancelListener:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
MyActivity.this.finish();
}
});
You need to finish only your activity. Dialog will be dismissed automatically.
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.cancel();
return true;
}
return false;
}
})
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
return new Dialog(getActivity(), getTheme()){
@Override
public void onBackPressed(){
// dismiss();
// activityReference.finish();
}
};
}
in my case i use DialogFragment, which is still a dialog..
so i overriden onCancel()
in my dialog, and it reacts like onBackPressed()
of the Activity everytime i click the back button when dialog is shown.
@Override
public void onCancel(DialogInterface dialog)
{
super.onCancel(dialog);
Log.i("RecDialog.onCancel()", "onCancel");
}
hope i helped.