gpt4 book ai didi

android - ProgressDialog 不要在 AsyncTask 中 dissmiss()

转载 作者:行者123 更新时间:2023-11-29 15:24:35 26 4
gpt4 key购买 nike

我想在 AsyncTask 中显示 ProgressDialog。这运行太棒了。但是,如果我在 onPostExecute() 中调用 mLoginPD.dissmiss(),则不会运行。

ProgressDialog 始终在屏幕上。

这是我的代码:

SherlockActivity mActivity;
ProgressDialog mLoginPD;

public Task_Login(String name, String pass, SherlockActivity activity) {
this.passwort = pass;
this.benutzername = name;
this.mActivity = activity;
}

protected void onPreExecute() {
super.onPreExecute();

mLoginPD = new ProgressDialog(mActivity);
mLoginPD.show(mActivity, "Login", "Logge Spieler ein...");
}

protected void onPostExecute(Void result) {
Log.e("hello", "hello");

mLoginPD.dismiss();
mLoginPD.cancel();
if(mLoginPD.isShowing()) {
mLoginPD.dismiss();
}
}

onPostExecute() 调用。我可以在 LogCat 中看到“你好”。

(我有 doInBackground() 但我是无关紧要的)

最佳答案

问题是您要创建两个 ProgressDialog 对象。

这一行:

mLoginPD = new ProgressDialog(mActivity);

创建一个对话框并将其分配给 mLoginPD,但不显示它。

这一行:

mLoginPD.show(mActivity, "Login", "Logge Spieler ein...");

创建另一个 对话框并显示那个对话框。问题是 show() 是一种静态方法,它可以在一个对话框中创建和显示对话框。因此,它正在创建第二个与显示的 mLoginPD 分开的。 mLoginPD 从未显示,因此调用 dismiss()cancel() 不会执行任何操作。

你需要做的是:

mLoginPD = ProgressDialog.show(mActivity, "Login", "Logge Spieler ein...");

代替这两行。这使用 show() 来创建和显示对话框并将其分配给 mLoginPD,以便您稍后可以关闭它。

关于android - ProgressDialog 不要在 AsyncTask 中 dissmiss(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428593/

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