android - AsyncTask 没有零参数构造函数

标签 android android-asynctask

假设我有一个名为 UpdateInterfaceStatusesTask 的 Android AsyncTask:

private class UpdateInterfaceStatusesTask extends AsyncTask<Object, Object, Object> {

    public UpdateInterfaceStatusesTask() {
        ;
    }

    protected Object doInBackground(Object... params) {
        View header = ((NavigationView) findViewById(R.id.nav_view)).getHeaderView(0);
        ((TextView) header.findViewById(R.id.nav_head_status)).setText(ServerThread.getInstance().isInterrupted() ? "Offline" : "Online");
        return null;
    }

    @Override protected void onPostExecute(Object param) {
        ;
    }
}

我想以编程方式创建它的一个新实例:

public void createNewInstance(Class<? extends AsyncTask<?, ?, ?>> clazz) {
    try {
        clazz.newInstance().execute();
    } catch (Exception x) {
        x.printStackTrace();
    }
}

我收到以下错误:

W/System.err: java.lang.InstantiationException: java.lang.Class<nl.hypothermic.offthegrid.ChatActivity$UpdateInterfaceStatusesTask> has no zero argument constructor
W/System.err:     at java.lang.Class.newInstance(Native Method)
W/System.err:     at nl.hypothermic.offthegrid.tasks.TaskScheduler$1.run(TaskScheduler.java:27)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:790)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err:     at android.os.Looper.loop(Looper.java:164)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

有人遇到同样的问题吗?

最佳答案

我想您的私有(private)类实际上是一个嵌套类,您需要将其设为静态才能使用 0 参数构造函数。 否则,总是至少有一个参数(总是第一个),它是包含类的一个实例。

关于android - AsyncTask 没有零参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52207870/

相关文章:

android - 当应用程序在 android 上关闭时,使用 alarmmanager 设置的 Asynctask 失败

android - 使用 AsyncTask 下载多个文件的问题

android - 1 个 Activity 的多个 onActivityResult

java - 如何防止 if 语句在第一次检查其条件时只执行一次?

java - Looper/Handler 与 Executor

android - 构建与 Android 应用程序通信的 C++ 程序的最佳方式

android - Firebase Firestore 阻止客户端在文档中创建字段

android - 内存/线程相关的方向更改崩溃?

android - Android/Java:如何实现AsyncTask?

java - 回收者 View 混合了其元素的内容