我正在编写一个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中调用它?
答案 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)
我更喜欢在发送第一个对话框之前将数据保存在第一个对话框中,当关闭第二个对话框时,再次使用保存的数据打开第一个对话框。我在开发中使用了这种方式并且有效..