gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:18 24 4
gpt4 key购买 nike

我有一个扩展 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com