在我的Activity中,我调用一个显示警告对话框的方法,并根据点击AlertDialog
和其他检查的按钮返回响应(此方法在另一个类中)
类似的东西:
public static boolean showAlertDialog(Context c,int param){
...
AlertDialog.Builder alert = new AlertDialog.Builder(con);
alert.setTitle(title);
alert.setIcon(android.R.drawable.ic_dialog_info);
alert.setMessage(message);
alert.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
...
}
}
);
....
alert.show();
return status;
}
问题在于,当我调用此方法时,代码不会等待用户在AlertDialog
上执行操作,但会继续执行。
所以,如果在我的活动中
boolean status=false;
status=Alerts.showAlertDialog(this);
if(status){
//do this
}
else{
//do that
}
始终执行else块
我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用EventBus。这将允许您从AlertDialog发布一个事件,您可以在任意数量的片段或活动中处理该事件。
答案 1 :(得分:0)
最简单的部分实际上是在Android版开发人员指南中Dialogs tutorial中描述的。
这很简单:你必须在Activity的一侧(implements NoticeDialogFragment.NoticeDialogListener
)实现一个接口并覆盖回调方法
@Override
public void onDialogPositiveClick(DialogFragment dialog) {
// User touched the dialog's positive button
...
}
@Override
public void onDialogNegativeClick(DialogFragment dialog) {
// User touched the dialog's negative button
...
}
我给出的示例使用的DialogFragment
不完全符合您的代码。但是,实现与您没有什么不同,您只需要查找相应的接口(例如OnDismissListener
)
你目前有这个:
boolean status=false;
status=Alerts.showAlertDialog(this);
if(status){
//do this
}
else{
//do that
}
你必须消除整个if
。更改您的活动,以便它实现DialogInterface.OnClickListener
接口
public class Blah extends Activity implements DialogInterface.OnClickListener
并添加方法
public void onClick(DialogInterface dialog, int which){
if (which==DialogInterface.BUTTON_POSITIVE){
//TODO: do your stuff
}
}
最后,在Alerts.showDialog()
方法更改
alert.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
...
}
}
);
到
alert.setPositiveButton(R.string.yes,c);
如果你有一个EditText,我必须假设你使用了AlertDialog
documentation Class Overview中描述的技术。如果是这样,由于您正在接收对话框作为参数,您必须在对话框中找到findViewById
的视图并以此方式提取值。