失去焦点后无法取消对话框?

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();

相反,我应该创建两个不同的对象,并根据情况关闭每个对象!

现在我回头看它,似乎是一个如此愚蠢的错误!希望这个答案可以帮助处于同样情况的其他人!创建不同的对象!

以上是关于失去焦点后无法取消对话框?的主要内容,如果未能解决你的问题,请参考以下文章

片段变化后失去焦点(ANDROID TV)

MFC 对话框 位图按钮 失去焦点

Android TV - 在细节片段中失去焦点

qt对话框失去焦点透明

当委托失去焦点时取消 QTableView 中的编辑

关于窗口失去焦点的问题,出高分求高手帮忙解决!