我的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);
}
}`
答案 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 (...);