java - 如何将调用 Request.callback onCompleted() 方法时从 Facebook 返回的数据传递到我在 Android 中的 fragment ?

标签 java android facebook android-fragments

我目前正在尝试将 Facebook 集成到我的 Android 应用程序中。让应用程序连接和验证我没有遇到任何问题。但是在执行 onCompleted(Response response) 回调方法后,我无法理解如何处理数据。 以下方法有效:

private void onSessionStateChange(Session session, SessionState state,
        Exception exception) {

    if (state.isOpened()) {

        Log.i(TAG, "Logged in...");

        new Request(session, "/me", null, HttpMethod.GET,
                new Request.Callback() {

                    @Override
                    public void onCompleted(Response response) {

                        GraphObject graphObject = response.getGraphObject();
                        JSONObject data = graphObject.getInnerJSONObject();

                        Log.i(TAG, "My DETAILS: ");

                        try {
                            Log.i(TAG, "ID: " + data.getLong("id"));
                            Log.i(TAG, "Name: " + data.getString("name"));
                            Log.i(TAG, "Email: " + data.getString("email"));
                            Log.i(TAG,
                                    "Gender: " + data.getString("gender"));

                        } catch (JSONException e) {

                            e.printStackTrace();
                        }

                    }
                }).executeAsync();

    } else if (state.isClosed()) {
        Log.i(TAG, "Logged out...");
    }
}

当我运行我的应用程序时,Facebook 进行身份验证,检索数据并成功输出到 Logcat 窗口。但是,我无法理解如何将 JSONObject 传递回我的 fragment 以进行进一步处理。
我在网上看过的大多数示例只是简单地将 JSONObject 内容设置为 fragment 中的 View ,或者简单地说 /* Handle response here */ 或类似的东西就没那么有用了。 我有另一种类似的方法,我想获取个人资料图片 url 并下载图片,但我无法将 url 返回到我的 fragment 以进行进一步处理。 我是否应该做一些事情,比如开发一个接受 JSONObject 作为参数的 runnable 类,并从 onCompleted() 方法启动一个单独的线程来处理这是我想要的方式吗?

我目前的目标是获取使用我的应用程序的用户 friend 列表,并保存他们的个人资料照片以供在应用程序中使用。我会以错误的方式解决这个问题吗?

最佳答案

所以如果我理解正确的话,你正在获取所有数据,你能够解析 JSON 但你无法将数据传递给你的其他 fragment ?为什么不写入一个可以从任何地方访问的文件?

为什么要“下载”图像,这会增加处理时间。只需使用此 URL:https://graph.facebook.com/"+uid.trim()+"/picture?type=normal 其中 uid 是您的用户 ID。将它与 Universal Image Loader 结合使用以在 ImageView 中异步加载图像。您节省了时间 - 避免了手动缓存文件或将文件保存在 SD 上的麻烦。

但是兄弟,这里的问题是 Facebook 将在 2015 年 4 月停止支持您正在使用的 API。开始移植您的应用程序以使用最新的 facebook API;然而,这对于获取用户信息并不是很有用。欢呼并继续编码:)

关于java - 如何将调用 Request.callback onCompleted() 方法时从 Facebook 返回的数据传递到我在 Android 中的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25624424/

相关文章:

javascript - 带有临时、非托管图像的 facebook 共享按钮

java - 如何在循环单链表中实现删除和搜索?

java - Java 中是否有一种方法可以让我将所有 HTML 特殊字符替换为其编码的等效字符?

Android、GET 和应用程序引擎 : Cloud Endpoints vs GWT RPC?

java - 如何显式执行垃圾收集

c# - ASP.NET 和 Facebook Connect - 如何使用 Graph API 发布到用户的墙上?

java - 为什么要这么写一个迭代器呢?

java - 无法在 eclipse 中将项目 facet ear 的版本更改为 1.3 maven 错误?

java - Android:包含文件的空 Assets 文件夹

php - 作为来自另一个 PHP 站点的页面发布到粉丝页面的墙上