我显示一个对话框,其中包含关闭按钮和一个用于打开新对话框的按钮。关闭按钮工作正常,除非我在当前的对话框之上打开了第二个对话框。我认为我的对话失去了焦点,无法关闭。
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
}
即使打开并关闭当前对话框之外的另一个对话框,如何将焦点重新连接到当前对话框?
答案 0 :(得分:1)
你应该在第二个对话框的onClick方法中取消第二个对话后取消第一个对话
点击此链接stack question
编辑:
尝试以编程方式设置可取消的属性
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
答案 1 :(得分:0)
如果您使用2对话框,则可以实现此目的。
public void anotherOne(View v){
openDialog2(); //Open dialog 2
}
public void closeDialog(View v){
dialog1.cancel();
}
答案 2 :(得分:0)
10个多小时后,我终于明白了!错误很简单。我使用相同的对话框对象来控制我的所有对话框。例如,我会初始化一个如下对话框:
generalDialog = new generalDialog(MainActivity.this);
generalDialog.setContentView(R.layout.myLayout);
然后我在另一个布局上使用相同的对话框实例!!
generalDialog = new generalDialog(MainActivity.this);
generalDialog.setContentView(R.layout.aDifferentFreakingLayout);
然后,我希望通过这样做来关闭我的第一个对话:
generalDialog.cancel();
相反,我应该创建两个不同的对象,并根据情况关闭每个对象!
现在我回头看,它似乎是一个如此愚蠢的错误!希望这个答案可以帮助处于同样情况的其他人! 创建不同的对象!!