Android Firebase 2.4 IllegalStateException utilizando nuevo ref.updateChildren ()
Cuando se utiliza Firebase 2.4 ref.updateChildren()
con HashMap, que no sea HashMap<String, Object>
(por ejemplo, HashMap<String, User>
) obtiene la IllegalStateException.
> 09-29 18:03:21.680: E/AndroidRuntime(6863): FATAL EXCEPTION: main > 09-29 18:03:21.680: E/AndroidRuntime(6863): Process: > com.xxx.xxx.xxx, PID: 6863 09-29 > 18:03:21.680: E/AndroidRuntime(6863): java.lang.IllegalStateException: > Could not execute method of the activity 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > android.view.View$1.onClick(View.java:4035) 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > android.view.View.performClick(View.java:4881) 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > android.view.View$PerformClick.run(View.java:19592) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > android.os.Handler.handleCallback(Handler.java:733) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > android.os.Handler.dispatchMessage(Handler.java:95) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > android.os.Looper.loop(Looper.java:146) 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > android.app.ActivityThread.main(ActivityThread.java:5756) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > java.lang.reflect.Method.invokeNative(Native Method) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > java.lang.reflect.Method.invoke(Method.java:515) 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) > 09-29 18:03:21.680: E/AndroidRuntime(6863): at > com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > dalvik.system.NativeStart.main(Native Method) 09-29 18:03:21.680: > E/AndroidRuntime(6863): Caused by: > java.lang.reflect.InvocationTargetException 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > java.lang.reflect.Method.invokeNative(Native Method) 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > java.lang.reflect.Method.invoke(Method.java:515) 09-29 18:03:21.680: > E/AndroidRuntime(6863): at > android.view.View$1.onClick(View.java:4030) 09-29 18:03:21.680: > E/AndroidRuntime(6863): ... 11 more 09-29 18:03:21.680: > E/AndroidRuntime(6863): Caused by: > com.firebase.client.FirebaseException: Failed to parse node with class > class com.xxx.xxx.xxx.User 09-29 > 18:03:21.680: E/AndroidRuntime(6863): at > com.firebase.client.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:84) > 09-29 18:03:21.680: E/AndroidRuntime(6863): at > com.firebase.client.snapshot.NodeUtilities.NodeFromJSON(NodeUtilities.java:12) > 09-29 18:03:21.680: E/AndroidRuntime(6863): at > com.firebase.client.utilities.Validation.parseAndValidateUpdate(Validation.java:127) > 09-29 18:03:21.680: E/AndroidRuntime(6863): at > com.firebase.client.Firebase.updateChildren(Firebase.java:438)
EDIT :
- Necesidad de formatear moneda para TextView
- Android: Cambiar el tamaño de los mapas de bits sin perder calidad
- Aplicación de Android Studio 0.2 que utiliza Google Maps - Gradle modify
- Compruebe si la hora actual es más de una hora desde el tiempo "last_updated"
- Android: ¿Hay una ventaja al establecer compileSdkVersion en una versión inferior a la última API?
¿Hay una manera de pasar HashMap personalizado como HashMap<String, User>
a ref.updateChildren()
?
- No se puede seleccionar Android Build Target en eclipse
- ¿Reacciona la compilación nativa de JavaScript en Java para Android?
- Cómo agregar CardView dentro de Gridview
- ¿Anular la tecla de eliminación en Android?
- Java.lang.UnsatisfiedLinkError: No se pudo cargar stlport_shared: findLibrary devuelto null (tess-two)
- ¿Por qué los colores de los píxeles no son correctos en OpenGL ES 2.0 en Android?
- BroadcastReceiver Vs WakefulBroadcastReceiver
- Ejecutar AspectJ causa NoSuchMethodError: Aspect.aspectOf
En su última pregunta:
¿Hay una manera de pasar HashMap personalizado como HashMap a ref.updateChildren ()?
El SDK de Firebase para Android / Java no admite directamente pasar POJOs (como su clase de User
) en updateChildren()
.
Pero lo que puede hacer es convertir el POJO en un Map
con:
Map<String, Object> userMap = new ObjectMapper().convertValue(user, Map.class);
A continuación, puede poner el mapa de valores en los valores que está pasando a updateChildren()
:
updates.put("users/"+uid, userMap); updates.put("lists/"+uid+"/mine, "value"); ref.updateChildren(updates);
Como en el fragmento de código del blog oficial de Firebase para evitar este problema, uno tiene que volver a escribir una estructura personalizada como esta:
Map<String, String> newPost = new HashMap<String, String>(); newPost.put("title", "New Post"); newPost.put("content", "Here is my new post!");
Y luego ponerlo en lugar de modelo de datos personalizados:
Map<String, Object> updatedUserData = new HashMap<String, Object>(); updatedUserData.put("users/posts/" + newPostKey, true); updatedUserData.put("posts/" + newPostKey, newPost);
El uso del modelo de datos personalizado en lugar de newPost
provoca IllegalStateException.
- Cómo manejar el error auth0 403 sin agregar código específico en todas partes (Retrofit / okhttp / RxAndroid)
- Animación de desenfoque de Android ImageView