gpt4 book ai didi

java - 无法将上下文从主 Activity 传递到 AsyncTask 以显示 AlertDialog - Android/Java

转载 作者:行者123 更新时间:2023-11-30 09:07:21 24 4
gpt4 key购买 nike

我正在尝试使用 onPostExecute/AsyncTask(它是我的 ActivityMain.java 之外的自己的类)显示一个 alertDialog,但是我收到一条错误消息,指出“构造函数 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);

如何正确传递上下文以避免此错误?

最佳答案

正如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();
}
}

如果 Activity 被销毁(或更好地暂停),那么您需要小心取消任务,以避免泄漏和通知到错误的 Activity/上下文

关于java - 无法将上下文从主 Activity 传递到 AsyncTask 以显示 AlertDialog - Android/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24020171/

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