Ich folge einem Lernprogramm zu Inhaltsanbietern und in einem bestimmten Code wurden einige Daten unter Verwendung einer bulkInsert
-Methode eingefügt. Sie verwendeten auch eine Vektorvariable (cVVector
), um alle ContentValues
zu speichern.Fehler beim Darstellen von Objekt [] zu ContentValues []
Code, der erwähnt wurde:
if (cVVector.size() > 0) {
ContentValues[] cvArray = new ContentValues[cVVector.size()];
cVVector.toArray(cvArray);
mContext.getContentResolver().bulkInsert(WeatherEntry.CONTENT_URI, cvArray);
}
Dann habe ich versucht, den Code zu reduzieren, indem cVVector.toArray()
-ContentValues[]
Gießen, aber ich erhalte eine Fehlermeldung.
-Code von mir bearbeitet:
if (cVVector.size() > 0) {
mContext.getContentResolver().bulkInsert(WeatherEntry.CONTENT_URI, (ContentValues[]) cVVector.toArray());
}
Fehler, die ich bekomme:
FATAL EXCEPTION: AsyncTask #1
Process: com.example.thiago.sunshine, PID: 9848
java.lang.RuntimeException: An error occured while executing doInBackground()
...
Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to android.content.ContentValues[]
Schließlich ist meine Frage: Warum ich nicht ein Casting zwischen einem Object[]
und einem ContentValues[]
tun können ?
Obs .: Englisch ist nicht meine Muttersprache, bitte entschuldigen Sie irgendwelche Fehler.
Es hat sehr geholfen. Ich war verwirrt, weil ich dachte, dass das Casting das Array automatisch ausführen würde und jedes Objekt in das neue Array werfen würde. Aber wie du schon sagtest, sind 'Object []' und 'ContentValues []' unterschiedliche Array-Typen, so dass das Casting, das ich gemacht habe, niemals richtig funktionieren wird. Danke nochmal! –