Je rencontre un problème étrange lors de la mise à jour de la base de données Firebase sur un nœud existant. il revient avec InvocationTargetException et plus loin en dessous d'une erreur stackoverflow (est-ce d'où le site tire son nom). Ive essayé tout ce que je pouvais penser et fouillé SO et ne peux toujours pas le réparer. Le problème ne semble pas être dans le fichier de construction. J'ai récemment changé le nom de mon paquet d'application et l'ai ajouté à la console de Firebase. Ive a également remarqué que la section de débogage du journal fait toujours référence à mon nom de package précédent com.example.shopper. cela pourrait-il le causer. Ou est-ce les deux lignes indiquées ci-dessous.erreur stackoverflow sur updatechildren() firebase android
else {
InventoryItem updatedItem = items.get(position).getInventoryItem();
updatedItem.setPrice(price);
updatedItem.setQuantity(quantity);
updatedItem.setUnitName(unitType);
Map<String, Object> databaseUpdate = new HashMap<>();
databaseUpdate.put(updatedItem.getName(), updatedItem);
Log.d(TAG, "done: updatedItem: "+updatedItem.toString());
inventoryDatabaseReference=inventoryDatabaseReference.child(updatedItem.getCategory());
Log.d(TAG, "done: updateNotWorking: "+inventoryDatabaseReference.toString());
inventoryDatabaseReference.updateChildren(databaseUpdate).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: "+e.toString());
}
});
}
C'est la ligne avec l'écouteur d'échec que me pointe la trace. J'ai ajouté l'écouteur pour voir ce qui n'allait pas, mais trouvé dès que la ligne est appelée, j'obtiens l'erreur comme dans le journal ci-dessus est l'opération finale réussie Pour obtenir les valeurs pour changer l'élément en utilisant un fragment de dialogue. Ce fragment est utilisé à plusieurs fins similaires, telles que le placement initial de ces données et fonctionne à cette fin. La trace ci-dessous il pointe à la première ligne d'appel donelistener.done
builder.setTitle(title).setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (setPrice || isUpdating)
doneListener.done(quantity, unitSelected, position, priceSet);
else {
priceInBasket = priceSet * quantityToBuy;
Log.d("n", "onClick: TotalPrice toBasket " + priceInBasket + "individiual price" + priceSet);
doneListener.done(quantityToBuy, buyerItemUnitName, position, priceInBasket);
}
}
})
Désolé si cela est une simple erreur et une perte de temps, mais Ive a passé toute la nuit dernière sur ce sujet et ne peut pas voir la solution. Tout ce que vous devrez peut-être me faire savoir La trace est comme ci-dessous
06-07 14:13:21.434 14585-14585/com.example.testing.shopper D/CurrentInventory: done: updatedItem: InventoryItem{quantity=6, price=0.5, unitName='/100g'}
06-07 14:13:21.435 14585-14585/com.example.testing.shopper D/CurrentInventory: done: updateNotWorking: https://shopper-a34fb.firebaseio.com/ShopInventory/-KkgxqStvYBMm1fz0lOZ/Energy%20Drinks
06-07 14:13:21.764 14585-14585/com.example.testing.shopper I/dalvikvm: threadid=1: stack overflow on call to Ljava/lang/AbstractStringBuilder;.enlargeBuffer:VI
06-07 14:13:21.764 14585-14585/com.example.testing.shopper I/dalvikvm: method requires 28+20+20=68 bytes, fp is 0x419a2334 (52 left)
06-07 14:13:21.764 14585-14585/com.example.testing.shopper I/dalvikvm: expanding stack end (0x419a2300 to 0x419a2000)
06-07 14:13:21.764 14585-14585/com.example.testing.shopper I/dalvikvm: Shrank stack (to 0x419a2300, curFrame is 0x419a248c)
06-07 14:13:21.765 14585-14585/com.example.testing.shopper D/AndroidRuntime: Shutting down VM
06-07 14:13:21.765 14585-14585/com.example.testing.shopper D/dalvikvm: threadid=1: detach (group=0x41aa3ce0)
06-07 14:13:21.765 14585-14585/com.example.testing.shopper W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41aa3ce0)
06-07 14:13:21.765 14585-14585/com.example.testing.shopper W/dalvikvm: threadid=1: uncaught exception occurred
06-07 14:13:21.765 14585-14585/com.example.testing.shopper W/System.err: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
06-07 14:13:21.772 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
un tas de ces
06-07 14:13:21.859 14585-14585/com.example.testing.shopper D/dalvikvm: GC_FOR_ALLOC freed 5052K (46469), 38% free 8607K/13700K, paused 34ms, total 35ms
06-07 14:13:21.860 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source)
06-07 14:13:21.860 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
06-07 14:13:21.860 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
06-07 14:13:21.860 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source)
Il montre ensuite les lignes où mon code est ci-dessus est
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.android.gms.internal.zzbqi.zzaF(Unknown Source)
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
06-07 14:13:21.877 14585-14585/com.example.testing.shopper W/System.err: at com.google.firebase.database.DatabaseReference.updateChildren(Unknown Source)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: at com.aihsoftware.shopper.CurrentInventoryFragment.done(CurrentInventoryFragment.java:288)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: at com.aihsoftware.shopper.DialogFragments.AddItemToInventoryDialogFragment$2.onClick(AddItemToInventoryDialogFragment.java:145)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: at android.os.Handler.dispatchMessage(Handler.java:110)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: at android.os.Looper.loop(Looper.java:193)
06-07 14:13:21.878 14585-14585/com.example.testing.shopper W/System.err: rr: at java.lang.reflect.Method.invoke(Method.java:515)
06-07 14:13:21.894 14585-14585/com.example.testing.shopper W/System.err: ... 557 more
06-07 14:13:21.895 14585-14585/com.example.testing.shopper W/System.err: Caused by: java.lang.StackOverflowError
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:163)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at java.lang.StringBuilder.append(StringBuilder.java:311)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri.encode(Uri.java:1864)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri$PathPart.getEncoded(Uri.java:2112)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri$HierarchicalUri.appendSspTo(Uri.java:1216)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri$HierarchicalUri.makeSchemeSpecificPart(Uri.java:1205)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri$HierarchicalUri.getSsp(Uri.java:1188)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: at android.net.Uri$HierarchicalUri.getSchemeSpecificPart(Uri.java:1197)
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/System.err: ... 559 more
06-07 14:13:21.906 14585-14585/com.example.testing.shopper W/dalvikvm: threadid=1: calling UncaughtExceptionHandler
enfin un tas de ceci en rouge
06-07 14:13:21.927 14585-14585/com.example.testing.shopper E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.testing.shopper, PID: 14585
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzaE(Unknown Source)
at com.google.android.gms.internal.zzbqi$zza.zzaF(Unknown Source)
at com.google.android.gms.internal.zzbqi.zzax(Unknown Source)
Merci à l'avance tout le monde
EDIT: fait creuser un peu plus et la cible d'invocation est une enveloppe autour de l'erreur stackoverflow. oublié de signaler cela. Cela signifie qu'il y a un problème avec les URI et le stringbuilder. base de données firebase .updateChildren() ne fonctionne pas avec les URI
Votre InventoryItem est probablement pas une valeur autorisée à Firebase. Vous pouvez uniquement mettre Chaîne, Long, Double, Booléen, Carte et Liste