我正在嘗試完成付款,需要更多的時間才能完成,我不希望用戶留在視圖上,直到他們看到成功消息所以一旦他們點擊後臺任務中的付款按鈕在預執行,我顯示一個彈出窗口說「處理您的付款」。一旦用戶點擊確定,他們將被導航到不同的視圖。一旦後臺任務完成,我想在當前視圖中再次顯示一個彈出窗口,顯示「您的付款已成功」。如何在後臺任務完成後在當前活動中顯示警報對話框
這裏是代碼片段,
private class payment extends AsyncTask<Void, Void, Void>
{
payment() {
}
@Override
protected void onPreExecute() {
AlertDialog.Builder successDialog=new AlertDialog.Builder(PayActivity.this);
successDialog.setMessage("Processing your payment");
successDialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Intent lResultIntent = new Intent();
setResult(RESULT_OK, lResultIntent);
finish();
}
});
successDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
// .....
}
@Override
protected void onPostExecute(Void result) {
Log.i("MSG","inside post");
AlertDialog.Builder success = new AlertDialog.Builder(EditCardActivity.this);
success.setMessage("Your payment was successful");
success.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
success.show();
}
}
注意
當我試圖運行此代碼我得到的「E/UncaughtException:android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌[email protected]eb5無效;您的活動正在運行?「
所以我用Google搜索,發現
if(!isFinishing()) {success.show();}
,但它並沒有幫助,當我登錄isFinishing()它打印爲true.This問題可能是重複我看到很多Q/A相似,此異常。我嘗試了大部分。不知道我缺少什麼。我來到這裏。任何建議或不同的方法都會有所幫助。謝謝!
越來越java.lang.InterruptedException – irigs
起初我試圖讓前Toast代替Alert對話框(onPostExecute),它在當前視圖中顯示得很好。但總是警告對話框失敗,此異常「E/UncaughtException:android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌[email protected]eb5無效;您的活動正在運行?」 – irigs