gpt4 book ai didi

android - ProgressDialog 与 AsyncTask - 不会显示

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

我知道这个问题已被问过多次,但我有一个明显干净的代码,但它不起作用,没有给我任何异常或任何东西。

我有一个简单的一键式 Activity (MainActivity)。其中的按钮调用 AsyncTask 以便在后台发送电子邮件。我尝试做我认为很常见的事情:在任务开始时显示 ProgressDialog 并在任务结束时关闭它。为此,我将上述代码放入 AsyncTask.onPreExecute()AsyncTask.onPostExecute() 中。我认为问题出在提供给对话框构造函数的 Context 中,但我为传递应用程序上下文的 AsyncTask 创建了一个简单的构造函数。我添加了一个简单的 Toast 进行调试,但它也没有显示...

下面是按钮 onClick 方法的代码:

public void onClick(View v) {
new Sender(this).execute("args");
}

这是任务的代码:

private class Sender extends AsyncTask<String, Void, Void> {
private ProgressDialog progDialog;
private Context context;

public Sender(Context context) {
this.context = context;
}

@SuppressWarnings("unused")
protected void onPreExecute(Void... params) {
Toast.makeText(this.context, "Sending...", Toast.LENGTH_SHORT).show();
progDialog = ProgressDialog.show(this.context, "Sending", "Picture is being sent...", true);
}

protected Void doInBackground(String... mailSubj) {
// some code that works
return null;
}

@SuppressWarnings("unused")
protected void onPostExecute(Void... v) {
progDialog.dismiss();
Toast.makeText(MainActivity.this, "Mail sent", Toast.LENGTH_SHORT).show();
}
}

我哪里出错了?

最佳答案

您的进度对话框未显示,因为您没有覆盖 onPreExecute()。将 @Override 注释添加到您的 onPreExecute(),看看会发生什么。 onPreExecute 不接受任何参数。

关于android - ProgressDialog 与 AsyncTask - 不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390312/

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