我遇到了一個問題,我有一個方法,我稱之爲processInfo()。該方法基本上處理從NFC標籤或QR碼收集的信息並將其寫入數據庫。 根據某些情況,processInfo方法處理如何將信息寫入數據庫。 processInfo方法返回一個布爾值,如果設置爲true,則DB中的信息將被髮送到Web服務器。AlertDialog框結果之前返回的方法
我在processInfo中有一些邏輯,說如果條件A然後寫入數據庫並返回true。這反過來將它發送到wewbservice。如果條件B然後顯示一個Alertdialog框。 Alertdialog框有一個OK和CANCEL按鈕。如果按下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;
}
@Nitish嗨,不幸的是我之前試過,但我使用匿名內部類DialogInterface.onClickListener和壓倒一切其onClick有一個返回類型的void。所以你不能返回布爾型 – turtleboy 2013-03-27 13:30:58
你意識到我的錯誤,這就是爲什麼我刪除了我的文章。 – Nitish 2013-03-27 13:33:17