3

Android 用の Facebook SDK 3.0 (最終リリース) を使用しています。ログインしているユーザーのフィードに新しいステータスを投稿しようとすると、時々 (常にではありません) が表示されますNullPointerException.getInnerJSONObject()以下は、私が内部で使用しているコードですnew Request.Callback(){}:

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();
                }
            }
4

2 に答える 2

3

リクエストにエラーがあった場合、response.getGraphObject() は null を返します。

Response を使用するコードは、getGraphObject() にアクセスする前に、response.getError() が null を返すことを常に確認する必要があります。

Response には 3 つのコンストラクターがあります。1 つは GraphObject を受け取るもの、もう 1 つは GraphObjectList を受け取るもの、もう 1 つは FacebookRequestError を受け取るもので、すべてのフィールドが final です。したがって、いずれの Response オブジェクトでも、これらのうちの 1 つだけが非 null になることができます。

于 2012-12-18T20:21:45.560 に答える
1

私はこれを経験しましたが、私が持っていたものを共有するためだけに、提供された URL またはリンクが無効である可能性があるため、nullpointerexception が発生します。これが、この状況を経験できる他の人に役立つことを願っています。

于 2013-05-16T05:52:14.000 に答える