Facebook android SDK 3.0-.getInnerJSONObject()处的NullPointerException

我正在使用适用于Android的Facebook SDK 3.0(最终版).当我尝试在登录的用户供稿上发布新状态时,有时(并非总是)在.getInnerJSONObject()处收到NullPointerException.以下是我在新的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();
                }
            }

解决方法:

如果请求中有错误,则response.getGraphObject()返回null.

使用Response的代码应始终检查在访问getGraphObject()之前response.getError()返回null.

Response有三种构造函数:一种采用GraphObject,一种采用GraphObjectList,另一种采用FacebookRequestError,并且所有字段都是最终的.因此,其中只有一个在任何Response对象上都不能为空.

上一篇:java-NullPointerException-这怎么可能发生?


下一篇:java-清理内存后,Android应用程序崩溃