Android AsyncTask没有零参数构造函数
假设我有一个名为UpdateInterfaceStatusTask的Android异步任务: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
私有类更新界面状态任务扩展异步任务{
公共更新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)