Weird parse crash android – Intenta invocar el método virtual 'int java.lang.Integer.intValue ()

Así que básicamente he intentado todo, pero sigo recibiendo este accidente. Se bloquea sólo a veces. Aquí está mi código:

if (mCurrentUser != null && mCurrentUser.containsKey(Constants.TABLE_POINTS)) { int points = mCurrentUser.getInt(Constants.TABLE_POINTS) + AppSingleton.sPointsLookupMap.get(pointsKey); mCurrentUser.put(Constants.TABLE_POINTS, points); mCurrentUser.saveInBackground(); } 

Stacktrace:

 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference at com.titlesource.ts_foodsource.fragments.KitchenFragment$10.done(KitchenFragment.java:654) at com.titlesource.ts_foodsource.fragments.KitchenFragment$10.done(KitchenFragment.java:649) at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115) at android.os.Handler.handleCallback(Handler.java:746) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

Ahora he encontrado que el intValue () se está utilizando dentro del método getInt () (Dentro de la clase ParseObject):

  public int getInt(String key) { Number number = this.getNumber(key); return number == null?0:number.intValue(); } 

¿Por qué recibo esta excepción? Lo he intentado todo. Se agregaron comprobaciones nulas y también se verificó que el campo está realmente presente en el objeto mCurrentUser pero todo en vano.

Si votación abajo esta pregunta, por favor deje una razón.

Usted tiene un Integer que es nulo, que está intentando unbox (haciendo un simple int de él).

Dado que el getInt(String key) de ParseObject ya comprueba si es nulo, la excepción no está ocurriendo allí.

En su lugar, estará en AppSingleton.sPointsLookupMap.get(pointsKey) , por lo que está intentando obtener un objeto del mapa que no existe.

Asegúrese de que existe o agregue el correcto manejo de errores a esa parte del código.

Reemplace su código con esto:

 if (mCurrentUser != null && mCurrentUser.containsKey(Constants.TABLE_POINTS)) { int points = mCurrentUser.getInt(Constants.TABLE_POINTS); Integer theOtherVariable = AppSingleton.sPointsLookupMap.get(pointsKey); if (theOtherVariable != null) points += theOtherVariable; mCurrentUser.put(Constants.TABLE_POINTS, points); mCurrentUser.saveInBackground(); } 

Debe solucionar el problema y hacer el código Excepción de seguridad 🙂

La primera línea (después del if) hizo algo como esto:

  1. Crea la variable points
  2. mCurrentUser.getInt(Constants.TABLE_POINTS) el valor mCurrentUser.getInt(Constants.TABLE_POINTS)
  3. Obtener un objeto Integer con AppSingleton.sPointsLookupMap.get(pointsKey)
  4. Agregue el objeto Entero obtenido a points , obteniendo su valor con la llamada .intValue() .

Todo esto sucedió detrás de las escenas en esta línea de código y si el objeto Integer obtenido era nulo, se lanzó la Exception .

A veces puede suceder cuando pasa la matriz del tipo Integer sin palabra clave final a la clase interna anónima (para OnClickListener en mi caso).

  • Parse crash en la creación de usuario
  • Parse: ¿Cómo configurar un puntero en Android?
  • Cross-plataforma de texto, imagen, video Chatear para Android, iOS y Web utilizando Firebase / Parse / PubNub
  • Cómo enviar notificación push en dos segmentos en momentos diferentes en un día en analizar
  • Parse.com equivalente a las combinaciones de SQL
  • ¿Puedo enlazar a una persona con twitter y facebook en parse?
  • Cómo recibir notificaciones de push parse en un dispositivo android usando parse.com
  • La aplicación que implementa Parse Unity Plugin se bloquea en el dispositivo android pero funciona bien en el editor
  • Facebook SDK: invalide alcance: información básica use public_profile, amigos de usuario en su lugar
  • ¿Cómo almacenar y recibir una foto de perfil en Parse.com?
  • Qué plataforma MBaaS utilizar para un proyecto específico: Parse o Google Cloud
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.