java-如何在Dialog上触发事件关闭Android?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何在Dialog上触发事件关闭Android?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1957字,纯文字阅读大概需要3分钟。
内容图文
我有一个自定义对话框,它扩展了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类一起使用它?
解决方法:
由于要扩展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?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。