java - 如何在 Dialog dismiss Android 上触发事件?

标签 java android dialog

我有一个扩展 Dialog 类的自定义对话框,我想在用户按下设备的 BACK 按钮关闭 Dialog 后绑定(bind)一个事件来执行一些代码。我怎样才能做到这一点?我发现了一篇帖子,其中有人说在使用对话框和其他窗口小部件时应该使用 .addWindowListener() 。但是对话框类没有addWindowListener 方法,所以我不能使用它。有没有不使用 fragment 的另一种方法,因为我不应该重写 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 类,您可以实现 Dismiss Listener在您的 Activity 中并在创建对话框时设置它,然后在监听器中根据用于关闭对话框的按钮实现您想要的任何功能。

希望这能解决您的问题。

编辑 您可以使用 dialog.setCanceledOnTouchOutside(false); 如果您在对话框外触摸,它将停止关闭对话框。

有点像,

  Dialog dialog = new Dialog(context)
  dialog.setCanceledOnTouchOutside(false);

或者另外

重写对话框的 onTouchEvent() 并检查操作类型。如果 Action 类型是 '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 dismiss Android 上触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531652/

相关文章:

java - 在飞溅 Activity 中按下后退按钮时如何完成其​​他 Activity ?

JavaFX : An object created in a method and used in another class?

android - 自动化gradle从代码构建应用程序包(.apk)

java - @Override 在 eclipse 中给出错误?

选择 showDatePicker 日期后,flutter 文本不会更新

java - 在 PrimeFaces 对话框中设置标题样式

java - 单击按钮时隐藏自定义对话框

java - 如何实现值为命中数的 Guava Cache?

java - 利用AlarmManager触发Notification

java - Android 从 app.Fragment 导航到 PreferenceFragment