我有一个问题,我有一个称为 processInfo() 的方法。此方法本质上是处理从 NFC 标签或 QR 码收集的信息并将其写入数据库。根据某些情况,processInfo 方法处理信息如何写入数据库。processInfo 方法返回一个布尔值,如果设置为 true,则将 DB 中的信息发送到 Web 服务器。
我在 processInfo 中有一些逻辑,如果条件 A 则写入 DB 并返回 true。这又将其发送到 webbservice。如果条件 B 则显示警报对话框。警报对话框有一个确定和取消按钮。如果按下 ok 则执行条件 A 中发生的情况,如果按下 CANCEL 则关闭对话框并返回 false。
发生的情况是,如果条件 B 发生,则对话框按预期显示,但在按下任何按钮之前它会返回调用方法。如何让应用程序挂起,直到至少按下一个按钮?
我试过使用while(! alertDialog.isShowing == true) -> return boolean
. 但它在之后退出alertDialog.show()
并返回调用方法。
success = false;
if(condition A) {
// write to DB and return to caller
return success = true;
} else {
success = false;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(NfcscannerActivity.this);
// set title
alertDialogBuilder.setTitle("Please logout after ");
// set dialog message
alertDialogBuilder.setMessage("Click Ok to return to the menu")
.setCancelable(false)
.setPositiveButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
success = true;
// write to DB
}
})
.setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
success = false;
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
return success;
}