gpt4 book ai didi

java - 后台任务完成后如何在当前 Activity 中显示警报对话框

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:49 25 4
gpt4 key购买 nike

我正在尝试进行一项付款,该付款需要更多秒数才能完成,我不希望用户在看到成功消息之前一直停留在 View 上,因此一旦他们在“预执行后台任务”中点击付款按钮,我就会显示一个弹出窗口,显示“正在处理您的付款”。用户单击“确定”后,他们将导航到不同的 View 。后台任务完成后,我想在当前 View 中再显示一个弹出窗口,显示“您的付款已成功”。

这是代码 fragment ,

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:无法添加窗口 - token android.os.BinderProxy@a38​​eb5 无效;您的 Activity 正在运行吗?”

所以我用谷歌搜索并找到了

if(!isFinishing()) {success.show();} 

但这没有帮助,当我记录 isFinishing() 时,它打印为 true。这个问题可能是重复的,我已经看到很多与此异常类似的 Q/A。我尝试了大部分。不确定我缺少什么。我在这里受到了打击。任何建议或不同的方法都会有所帮助。谢谢!

最佳答案

问题出在 onPreExecute 方法中,因为调用 finish() 方法但 AsyncTask 仍在运行。

在单击“确定”按钮完成当前 Activity 之前,请调用 AsyncTask.cancel :

....
setResult(RESULT_OK, lResultIntent);
payment.this.cancel(true);
finish();

还在显示来自 onPostExecute 的警报之前添加对 isCancelled() 的检查

if(!this.isCancelled()){
// show Alert Here
}

关于java - 后台任务完成后如何在当前 Activity 中显示警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40380742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com