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

时间:2018-06-21 12:32:53

标签: java android android-asynctask

我的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);
    }

}`

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您可以使用对象作为参数创建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 (...);