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

时间:2017-12-23 04:25:17

标签: java android xml algorithm dialog

我显示一个对话框,其中包含关闭按钮和一个用于打开新对话框的按钮。关闭按钮工作正常,除非我在当前的对话框之上打开了第二个对话框。我认为我的对话失去了焦点,无法关闭。

  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

}

即使打开并关闭当前对话框之外的另一个对话框,如何将焦点重新连接到当前对话框?

3 个答案:

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

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

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