我知道这个问题已被多次问过,但我有一个明显干净的代码,但它不起作用,没有给我任何异常或任何东西。
我有一个简单的一键式 Activity ( MainActivity
)。其中的按钮调用 anAsyncTask
以便在后台发送电子邮件。我试图做我认为这是一件很常见的事情:ProgressDialog
在任务开始时显示 a 并在任务结束时将其关闭。为此,我将上述代码放入AsyncTask.onPreExecute()
andAsyncTask.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();
}
}
我哪里做错了?