2012-12-18 6 views
3

J'utilise Facebook SDK 3.0 (version finale) pour Android. Je reçois un NullPointerException à .getInnerJSONObject() parfois (pas toujours) lorsque j'essaie de poster un nouveau statut sur le flux de l'utilisateur connecté. Voici le code que je suis à l'aide à l'intérieur new Request.Callback(){}:Facebook android SDK 3.0 - NullPointerException à .getInnerJSONObject()

public void onCompleted(Response response) { 
       JSONObject graphResponse = response 
              .getGraphObject() 
              .getInnerJSONObject(); 
       String postId = null; 
       try { 
        postId = graphResponse.getString("id"); 
       } catch (JSONException e) { 
        Log.d("", "JSON error "+ e.getMessage()); 
       } 
       FacebookRequestError error = response.getError(); 
       if (error != null) { 
        Toast.makeText(SessionLoginSampleActivity.this, error.getErrorMessage(), Toast.LENGTH_SHORT).show(); 
       } else { 
        Toast.makeText(SessionLoginSampleActivity.this, "Post successful " + postId, Toast.LENGTH_LONG).show(); 
       } 
      } 
+2

vous devriez probablement vérifier une erreur avant d'essayer d'obtenir l'objet JSON interne – thepoosh

+1

Bienvenue au débordement de pile. L'erreur vient très probablement devenir la réponse var n'a pas été définie correctement; Je vous suggère de déboguer et de poster ici si vous trouvez plus, ne vous découragez pas si cette question obtient des votes négatifs – quinestor

+0

cela devrait être une règle: si vous postez un problème impliquant une exception, * toujours * n'oubliez pas de poster selon la pile – andr

Répondre

3

S'il y avait une erreur dans la requête, response.getGraphObject() renvoie NULL.

Le code utilisant Response doit toujours vérifier que response.getError() renvoie null avant d'accéder à getGraphObject().

Il existe trois constructeurs de réponse: un qui prend un objet GraphObject, un qui prend un objet GraphObjectList et un qui prend un objet FacebookRequestError, et tous les champs sont définitifs. Donc, un seul d'entre eux peut être non nul sur n'importe quel objet Response.

+0

Merci pour l'aide. Cela le fait vraiment. –

1

Je l'ai vécu et juste pour partager ce que j'ai eu, peut-être l'URL ou le lien fourni est invalide c'est pourquoi il donne nullpointerexception. Espérons que cela aidera les autres qui peuvent éprouver cette situation.