Request.GraphUserListCallback上的onCompleted不会被执行

Chi*_*hah 0 facebook facebook-graph-api facebook-android-sdk

我有这个方法和第一个日志打印,其他没有

我究竟做错了什么?

就是这样:Log.d("insideGetFriends","in"); 获取打印,我查看了我的日志,

Log.d( "facebookError",Integer.toString(graphUsers.size())); 其余的行不会被执行.

 public ArrayList<ParseUser> getFriends(Session session)
    {
        Log.d("insideGetFriends","in");
        final ArrayList<ParseUser> users=new ArrayList<>();
        Request.newMyFriendsRequest(session,new Request.GraphUserListCallback() {
            @Override
            public void onCompleted(List<GraphUser> graphUsers, Response response) {

                Log.d("facebookError",Integer.toString(graphUsers.size()));

                for(GraphUser user:graphUsers)
                {
                    String facebookId=user.getId();
                    Log.d("facebookFriend",facebookId);
                    ParseQuery<ParseUser> query=ParseUser.getQuery();
                    query.whereEqualTo("facebookID",facebookId);
                    query.findInBackground(new FindCallback<ParseUser>() {
                        @Override
                        public void done(List<ParseUser> parseUsers, ParseException e) {
                            users.add(parseUsers.get(0));
                        }

                    });
                }
            }

        });
        return users;
    }
Run Code Online (Sandbox Code Playgroud)

der*_*ink 7

看起来您没有开始/执行请求.

您需要将结果存储Request.newMyFriendsRequest(...)在变量中,然后调用.executeAsync()它.这在这里解释:https://developers.facebook.com/docs/android/graph#userdata

  • 别担心.事实上,只是提出问题; 这样,可能做同样事情的其他人将能够找到这一点,并意识到如何更快地解决他们的问题. (2认同)