繁体   English   中英

AsyncTask引发错误“由java.lang.ClassCastException引起:java.lang.Object []无法转换为doinbackground()上的java.lang.Void []”

[英]AsyncTask throwing Error “Caused by java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[]” on doinbackground()

我的Asynctask抛出此错误

"Caused by java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[]"

码:

protected Object doInBackground(Void... params) 

上面的方法仅适用于特定用户,而不适用于所有用户。有人能告诉我像“ AsyncTask Void,Void,Object”这样的无效传递是引起我问题的原因吗? 下面我附上我的代码

private class RegisterTask extends 
AsyncTask<Void, Void, Object>      
       {

    protected void onPreExecute() {
        super.onPreExecute();
        }
    }
    protected Object doInBackground(Void... params) {
        return null;
    }
    protected void onPostExecute(Object result) {
        super.onPostExecute(result);
    }

}`

检查传递给new RegisterTask().execute()方法的参数。 也许您使用Object类型而不是Void

更改您的RegisterTask类以扩展AsyncTask <Object, Void, Object> 在此处了解有关AsyncTask更多信息。

您可以使用对象作为参数创建AsyncTask,即使您不使用它也不会造成伤害

private class RegisterTask extends AsyncTask<Object, Void, Object>      
    {

    protected void onPreExecute() {
        super.onPreExecute();
        }
    }
    protected Object doInBackground(Object... params) {
        return null;
    }
    protected void onPostExecute(Object result) {
        super.onPostExecute(result);
    }

}

替代方法是您初始化AsyncTask的方式,这是通用方法吗?

//Change
AsyncTask asyncTask = new  RegisterTask (...);

然后,删除上面的内容,并在正确的参数声明侧创建您的AsyncTask。

AsyncTask<Void, Void, Object> asyncTask = new  RegisterTask (...);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM