我有一个自定义对话框,它扩展了Dialog类,我想绑定一个事件以在用户按下设备的BACK按钮后关闭Dialog后执行一些代码.我怎样才能做到这一点?我找到了一篇帖子,其中有人说在使用Dialogs和其他Window小部件时应使用.adDWindowListener().但是对话框类没有adDWindowListener方法,所以我不能使用它.有没有不使用片段的另一种方法,因为我不应该重写MyCustomDialog类?
这是代码:
public class MyCustomDialog extends Dialog {public MyCustomDialog(Context context, int layoutResourceID) { super(context); requestwindowFeature(Window.FEATURE_NO_Title); setContentVIEw(layoutResourceID);}}
感谢您的关注!
编辑:我在androID开发人员站点上找到了这一点,有没有办法与MyCustomDialog类一起使用它?
onDismiss DialogInterface
解决方法:
由于要扩展androID Dialog类,因此可以在Activity的实例中实现Dismiss Listener并在创建Dialog时对其进行设置,然后在侦听器中实现所需的任何功能,具体取决于用来关闭Dialog的按钮.
希望这能解决您的问题.
编辑您可以使用dialog.setCanceledOntouchOutsIDe(false);如果您在对话框外部触摸,它将停止关闭对话框.
就像是,
Dialog dialog = new Dialog(context) dialog.setCanceledOntouchOutsIDe(false);
或者
覆盖对话框的ontouchEvent()并检查 *** 作类型.如果动作类型是
“ MotionEvent.ACTION_OUTSIDE”表示用户正在对话框区域之外进行交互.因此,在这种情况下,您可以取消对话框或决定要执行的 *** 作.
查看原图?
dialog.setontouchListener(new VIEw.OntouchListener(){ @OverrIDe public boolean ontouch(VIEw v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_OUTSIDE){ Toast.make(getApplicationContext(), "touched outsIDe the dialog", Toast.LENGTH_LONG).show(); this.dismiss(); } return false; }});
对于后按,您可以执行dialog.setCancelable(false);.这将防止对话框因backpress事件而取消.
或者,您也可以覆盖setonKeyListener事件,并将自己的代码放入其中.
编辑
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; } });
快乐编码!
总结以上是内存溢出为你收集整理的java-如何在Dialog上触发事件关闭Android?全部内容,希望文章能够帮你解决java-如何在Dialog上触发事件关闭Android?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)