java 对话框关闭事件_java-如何在Dialog上触发事件关闭Android?
我有一个自定义对话框,它扩展了Dialog类,我想绑定一个事件以在用户按下设备的BACK按钮后关闭Dialog后执行一些代码.我怎样才能做到这一点?我找到了一篇帖子,其中有人说在使用Dialogs和其他Window小部件时应使用.addWindowListener().但是对话框类没有addWindowListener方法,所以我不能使用它.有没有不使用片段的另一种方法,因为我不应该重写MyCus
我有一个自定义对话框,它扩展了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;
}
});
快乐编码!
标签:dialog,java,android
来源: https://codeday.me/bug/20191029/1962361.html
更多推荐
所有评论(0)