我试图使用onPostExecute / AsyncTask显示一个alertDialog(它是我自己的ActivityMain.java之外的类)但是我收到一条错误说明"构造函数AlertDialog。 Builder(AsyncTask)未定义。"
@Override
protected void onPostExecute(FunctionResult result) {
if(result != null) {
listener.callback(result);
}
else{
Toast.makeText(c, "text", 1000).show();
AlertDialog.Builder builder = new AlertDialog.Builder(
AsyncTask.this);
builder.show();
}
}
在研究了这个问题后,我发现了这个:
Android : "The constructor AlertDialog.Builder(new View.OnClickListener(){}) is undefined" error
根据提供的答案,我似乎没有正确地将上下文从ActivityMain传递给我的AsyncTask类。
我尝试了实施:
AlertDialog.Builder builder = new AlertDialog.Builder(ActivityMain.this);
以及:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
如何正确传递上下文以避免此错误?
答案 0 :(得分:2)
正如Raghunandan所说,只需在构造函数中传递它
class MyTask extends AsyncTask<...,..., FuncionResult> {
Context mCtx;
MyTask(Context ctx) {
mCtx = ctx;
}
...
protected void onPostExecute(FunctionResult result) {
...
Toast.makeText(mCtx, "text", 1000).show();
AlertDialog.Builder builder = new AlertDialog.Builder(
mCtx);
builder.show();
}
}
然后,如果活动被销毁(或更好地暂停),您需要小心取消任务,以避免泄漏并通知错误的活动/上下文