一次关闭多个对话框

时间:2012-01-29 18:27:38

标签: android dialog

我正在编写一个Android应用程序,其中用户选择会触发自定义Dialog,选择可能会触发第二个Dialog

当显示Activity类的初始Dialog时,我在其上设置onDismissListener以提取用户选择,在没有触发第二个Dialog的情况下,其他工作正常。我遇到的问题是我无法弄清楚如何让第一个Dialog保持打开状态,直到第二个被解雇,以便将两者的信息发送回Activity类。

希望有些代码可以让它更加清晰:

我正在启动初始CustomDialog的MainActivity类:

customDialog = new CustomDialog(this);
                customDialog.show();
                customDialog.setOnDismissListener(new OnDismissListener(){
                    public void onDismiss(DialogInterface di){
                        slection = customDialog.getselection();
                        updateUI(); //updates a listview with the results
                    }
                });

在CustumDialog类中,我在其上启动SecondDialog:

if(specify){
    SecondDialog secondDialog = new SecondDialog(context);
    secondDialog.show();
    secondDialog.setOnDismissListener( new OnDissmissListener(){
        public void onDismiss(DialogInterface di){
            // this is where I want to call the CustomDialog's dismiss() method
            // so that they both close at the same time and the data from here
            // can be sent back to the MainActiivty through the CustomDialog's
            // onDismissListener

        }
    });
}
dismiss();

所以,重申:我试图阻止调用CustomDialog的dismiss()方法,直到SecondDialog也被解除。有没有办法可以从SecondDialog的OnDismissListener中调用它?

2 个答案:

答案 0 :(得分:2)

您应该将customDialog创建为实例级变量。然后,您可以通过onDismiss(...)第二个对话框访问它。在那里你可以致电customDialog.dismiss();

// Instance level variable
private Dialog customDialog = null;

启动您的customDialog,然后在customDialog中创建第二个对话框。你的第二个对话框的代码看起来像这样。

if(specify){
    SecondDialog secondDialog = new SecondDialog(context);
    secondDialog.show();
    secondDialog.setOnDismissListener( new OnDissmissListener(){
        public void onDismiss(DialogInterface di){
            // customDialog is accessible as it is declared as instance level variable
            MyClassName.this.customDialog.dismiss();

        }
    });
}
dismiss();

答案 1 :(得分:0)

我更喜欢在发送第一个对话框之前将数据保存在第一个对话框中,当关闭第二个对话框时,再次使用保存的数据打开第一个对话框。我在开发中使用了这种方式并且有效..