Android overriding onKeyDown within Dialog -
i have activity opens dialog openeed:
/** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mpath = new file(getintent().getextras().getstring("start_path")); ftype = getintent().getextras().getstring("filter"); showdialog(dialog_load_file); }
i'm trying make when user clicks button (while still within dialog), entire activity exited. have following:
@override public boolean onkeydown(int keycode, keyevent event) { if (keycode == keyevent.keycode_back) { intent resultintent = new intent(); resultintent.putextra("file_path", mpath.tostring()); setresult(activity.result_ok, resultintent); finish(); } return true; }
this works great if dialog no longer there, doesn't called if dialog still active. thoughts?
you must create object of dialoginterface.onkeylistener
, in can override onkey(dialoginterface dialog, int keycode, keyevent event)
. method capture key event inside dialog. example:
alertdialog.builder dialogbuilder = new alertdialog.builder(this); //do dialog like: dialogbuilder.setview(view); dialogkeylistener dkl = new dialogkeylistener(); dialogbuilder.setonkeylistener(dkl); alertdialog dialog = dialogbuilder.create(); dialog.show();
and listener class:
private class dialogkeylistener implements android.content.dialoginterface.onkeylistener { @override public boolean onkey(dialoginterface dialog, int keycode, keyevent event) { if(keycode == keyevent.keycode_back) { dialog.dismiss(); yourclassactivity.finish(); // or return false; } return true } }
Comments
Post a Comment