失去焦点后无法取消对话框?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了失去焦点后无法取消对话框?相关的知识,希望对你有一定的参考价值。
我显示一个带有关闭按钮的对话框和一个用于打开新对话框的按钮。关闭按钮工作正常,除非我在当前的对话框之上打开了第二个对话框。我认为我的对话失去了焦点,无法关闭。
public void anotherOne(View v){
openDialog2(); //This opens another dialog on top of the current one
}
public void closeDialog(View v){
dialog.cancel(); //This works fine unless anotherOne() has been called and closed
}
即使打开并关闭当前对话框之外的其他对话框,如何将焦点重新连接到当前对话框?
答案
您应该在第二个对话框的onClick方法取消第二个对话框后取消第一个对话框
点击这个链接stack question
编辑:
尝试以编程方式设置cancelable属性
dialog.setCancelable(true);//will cancel dialog onBackPressed() and when negative button clicked
dialog.setCanceledOnTouchOutside(true); // will cancel when user touches screen outside the dialog's box
另一答案
如果使用2对话框,则可以实现此目的。
public void anotherOne(View v){
openDialog2(); //Open dialog 2
}
public void closeDialog(View v){
dialog1.cancel();
}
另一答案
10个多小时后,我终于明白了!错误很简单。我使用相同的对话框对象来控制我的所有对话框。例如,我会初始化一个对话框,如下所示:
generalDialog = new generalDialog(MainActivity.this);
generalDialog.setContentView(R.layout.myLayout);
然后我会在另一个布局上使用相同的对话框实例!!
generalDialog = new generalDialog(MainActivity.this);
generalDialog.setContentView(R.layout.aDifferentFreakingLayout);
然后,我希望通过这样做来关闭我的第一个对话框:
generalDialog.cancel();
相反,我应该创建两个不同的对象,并根据情况关闭每个对象!
现在我回头看它,似乎是一个如此愚蠢的错误!希望这个答案可以帮助处于同样情况的其他人!创建不同的对象!
以上是关于失去焦点后无法取消对话框?的主要内容,如果未能解决你的问题,请参考以下文章