Skip to content Skip to sidebar Skip to footer

Asynctask: Classcastexception: Java.lang.object[] Cannot Be Cast To Java.lang.string[]

In my application I run these code for gcm ccs(xmpp) and the code shows following error An error occurred while executing doinbackground.excute() This is the code: sendTask = new A

Solution 1:

How is your sendTask declared? I suppose its simply AsyncTask sendTask;, if so then change it to:

AsyncTask<String, String, String> sendTask;

The cause of this exception is similar to the one that occurs in below code:

Object arr1[] = newObject[] {null,null,null};
String arr2[] = (String[])arr1; // here java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

VarArgs in java are implemented as arrays, so when you declare sendTask as AsyncTask<String, String, String> then compiler will call your doInBackground with new String[]{null,null,null}, but when you declare it as AsyncTask then doInBackground is called with new Object[]{null,null,null}.

Because of type erasure, compiler will add hidden implicit cast from Object[] to String[]. This is to allow code as below to work correctly:

AsyncTask sendTask = ...;
  Object[] arg = newString[]{null,null,null};
  sendTask.execute(arg);

Solution 2:

Try

sendTask.execute(new String[]{""});

instead of

sendTask.execute(null, null, null);

Post a Comment for "Asynctask: Classcastexception: Java.lang.object[] Cannot Be Cast To Java.lang.string[]"