Android AsyncTask没有零参数构造函数

Android AsyncTask没有零参数构造函数,android,android-asynctask,Android,Android Asynctask,假设我有一个名为UpdateInterfaceStatusTask的Android异步任务: 私有类更新界面状态任务扩展异步任务{ 公共更新interfacestatusestask(){ ; } 受保护对象doInBackground(对象…参数){ 视图标题=((NavigationView)findViewById(R.id.nav_视图)).getHeaderView(0); ((TextView)header.findviewbyd(R.id.nav_head_status)).set

假设我有一个名为UpdateInterfaceStatusTask的Android异步任务:

私有类更新界面状态任务扩展异步任务{
公共更新interfacestatusestask(){
;
}
受保护对象doInBackground(对象…参数){
视图标题=((NavigationView)findViewById(R.id.nav_视图)).getHeaderView(0);
((TextView)header.findviewbyd(R.id.nav_head_status)).setText(ServerThread.getInstance().isInterrupted()?“脱机”:“联机”);
返回null;
}
@重写受保护的void onPostExecute(对象参数){
;
}
}
我想通过编程方式创建一个新的实例:

public void createNewInstance(Class<? extends AsyncTask<?, ?, ?>> clazz) {
    try {
        clazz.newInstance().execute();
    } catch (Exception x) {
        x.printStackTrace();
    }
}
public void createNewInstance(类>clazz){
试一试{
clazz.newInstance().execute();
}捕获(异常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)
W/System.err:java.lang.InstanceionException:java.lang.Class没有零参数构造函数
W/System.err:at java.lang.Class.newInstance(本机方法)
W/System.err:at nl.lovermic.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(本机方法)
W/System.err:com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
W/System.err:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

有人有同样的问题吗?

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

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

我有点困惑,为什么您不只是调用
new updateinfacestatusestask()
@TheLoverter我的函数参数中有
类>
,需要从中创建一个新实例。但这就是您的代码现在显示的内容。您刚刚创建了一个全新的实例。我有点困惑,为什么您不只是调用
new updateInFaceStatuseStask()
@TheLoverter我的函数参数中有
Class>
,需要从中创建一个新的实例。但这就是您的代码现在显示的内容。你只是在做一个全新的例子。
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)