Android 如何在自定义对话框关闭时触发事件?
我正在创建自己的自定义对话框。我想在自定义对话框关闭但无法启动时触发一个事件 注意:Ondismiss()没有选项,所以我可以覆盖它。 这是我的密码:Android 如何在自定义对话框关闭时触发事件?,android,dialog,Android,Dialog,我正在创建自己的自定义对话框。我想在自定义对话框关闭但无法启动时触发一个事件 注意:Ondismiss()没有选项,所以我可以覆盖它。 这是我的密码: Dialog pdialog=new Dialog(MainActivity.this); pdialog.requestWindowFeature(Window.FEATURE_NO_TITLE); pdialog.setContentView(R.layout.cust);
Dialog pdialog=new Dialog(MainActivity.this);
pdialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
pdialog.setContentView(R.layout.cust);
ImageView cancel=(ImageView) pdialog.findViewById(R.id.close);
TextView txtheader=(TextView) pdialog.findViewById(R.id.txttheader);
txtheader.setText("Accent Report");
pdialog.show();
pdialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
// TODO Auto-generated method stub
System.out.println("hello world@@@@@");// this line is not getting called.
}
});
pdialog.setCanceledOnTouchOutside(true);
pdialog.setCancelable(true);
}
在自定义对话框的类定义中,重写dismise()函数并在其中执行操作。如下所示:
@Override
public void dismiss() {
someListener.onActionHappened(); //your action
super.dismiss();
}
同时尝试重写cancel方法。我还没有测试过这个
@Override
public void cancel() {
someListener.onActionHappened(); //your action
super.cancel();
}
简单又甜蜜。。您可以在OnClickListener中添加操作。。。它将关闭对话框并执行操作
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
pdialog.dismiss();
// Your Action Here
}
});
您正在采取什么措施来取消自定义对话框, 按自定义对话框的“取消”按钮还是按设备的“后退”按钮? 你可以试试下面的代码 其中视图是自定义对话框视图
View view=View.inflate(context, R.layout.activity_account_history_screen, null);
if(view.isShown())
{
//do some task
}
else`enter code here`
{}
如果我按下对话框上的“取消”按钮,则不会调用on Disclose。如果用户按下Backpress或OnTouchOutside,则不会调用on Disclose。然后将cancel dialog设置为false,并在Backpress上执行操作。您是否已经尝试了下面答案中建议的所有操作?您是否尝试过使用调试器跟踪流,以确定对话框关闭时调用了哪些方法?对话框在SetOnClickListener上关闭如果我使用setondismisslistner,则不会调用Disclease。对话框是否以其他方式关闭?我在代码中看到您阻止了关闭对话框的其他方式。是的,我修改了代码并将我的setcancelable设置为true,因此,如果我触摸外部,对话框将被取消,但setondismisslistner-on Disclease不会被调用,我会有一个取消按钮。在我调用setonclicklistner的过程中,也使用setCanceledOnTouchOutside(true),那么您实际上得到了一个事件,在该事件中对话框将关闭。您可以在对话框上的setonclicklistner上触发一个事件“取消”按钮,在触摸外部时关闭对话框有两个选项1。使setCanceledOnTouchOutside(false)在基本布局和setontouchlistener检查对话框视图中的另一个touchlistener上通过代码显示visibe或not