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

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -