java - 不能从静态上下文中引用非静态方法 execute()

标签 java android

我不明白为什么我会收到这个编译错误;我这里涉及的类或方法都不是静态的。也许有人可以在这里阐明一些想法。

在我的 MainActivity 类中,我声明了一个扩展 AsyncTask 的公共(public)类:

public class AsyncStuff extends AsyncTask<String, Void, String> {
    ...
}

在我的非 Activity 类中,我有一个应该触发异步任务的公共(public)函数:

public class Util {
    public void ExecuteAsyncMethod(){
        MainActivity.AsyncStuff.execute(new String[]{"test" }); // error here
    }
}

我还尝试实例化 MainActivity.AsyncStuff 类的对象并执行其 execute() 方法,但这也不起作用,因为它不在封闭类中。我无法将它移到其他地方,因为我需要更新 UI,因此它需要保留在 MainActivity 类中。

无论如何,我需要帮助来弄清楚为什么我的 ExecuteAsyncMethod() 方法无法编译。

谢谢!!

最佳答案

这样定义:

public static class AsyncStuff extends AsyncTask<String, Void, String> {
    ...
}

然后像这样运行:

public class Util {
    public void ExecuteAsyncMethod(){
        new AsyncStuff().execute(new String[]{"test" });
    }
}

关于java - 不能从静态上下文中引用非静态方法 execute(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31464635/

相关文章:

android - 我可以向 Google Play 提交具有不同包名称和显示名称的相同 APK 吗?

java - 如何在 Mac OS X 10.7.5 上运行 Eclipse Oxygen

java - 添加到 stringbuffer 逗号

java - 将 class.forName 创建的类作为参数传递

java - 从 assets 文件夹中读取 pdf 文件

android - 在 DialogFragment IllegalStateException 中膨胀 RecyclerView

java - AlarmManager 与具有长定时器的处理程序/定时器

java - Maven 在 Docker 容器内下载时挂起

java - 在 Intellij 中创建 TestNG xml

android - 如何搜索特定格式的电子邮件列表?