Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个类调用Facebook GraphRequest返回null_Java_Android_Facebook - Fatal编程技术网

Java 从另一个类调用Facebook GraphRequest返回null

Java 从另一个类调用Facebook GraphRequest返回null,java,android,facebook,Java,Android,Facebook,我正在制作一个需要从Facebook获取数据的应用程序。 为了避免重复代码,我决定为GraphRequest创建一个类 public class FacebookRequest { private static JSONObject object; private FacebookRequest(JSONObject object) { this.object = object; } private static JSONObject GraphApiRequest(String p

我正在制作一个需要从Facebook获取数据的应用程序。 为了避免重复代码,我决定为GraphRequest创建一个类

public class FacebookRequest {
private static JSONObject object;

private FacebookRequest(JSONObject object) {
    this.object = object;
}

private static JSONObject GraphApiRequest(String path, AccessToken token){
        new GraphRequest(
                token,
                path,
                null,
                HttpMethod.GET,
                new GraphRequest.Callback() {
                    public void onCompleted(GraphResponse response) {
                        object = response.getJSONObject();
                    }
                }
        ).executeAsync();
    return object;
}

public static JSONObject getGraphApi(String path, AccessToken token){
    return GraphApiRequest(path, token);
}}
调用我使用的类

private static FacebookRequest fbRequest;
//....
JSONObject object= fbRequest.getGraphApi(path,token);
问题是
GraphApiRequest
方法始终返回
object=null
,并且仅在执行请求之后返回

我应该更改什么以获得实际的待命对象

编辑: 多亏了

所以我找到了一个解决方案来调用对象,但这不是一个完美的选择(甚至可能是错误的,因为我在编程方面不是很有经验,但它适合我)

当我调用请求时,它会在一段时间后执行

protected void onCreate(Bundle savedInstanceState) {
    //...
    FacebookRequest fbRequest = new FacebookRequest(path,token);
    //...
}
为了得到实际的对象调用我使用

JSONObject object = fbRequest.getObject();

如果在创建构造函数之后立即调用JSONObject,它仍然不起作用。如果您能给我一些建议的话,我期待着改进这段代码。

为什么不按照此文档使用此方法GraphRequest.newmereRequest()

而不是调用。
私有静态FacebookRequest fbRequest静态地,您应该调用构造函数,这样您的对象将不会为null,并且在返回存储在对象中的响应时,您将接收数据而不是null。

这里解释了您要查找的内容()。 正如您所要求的,要在创建构造函数后立即使用它,请将
.executeAsyc()
替换为
.executeAndWait()


由于主线程冻结和糟糕的用户体验,这一点没有得到建议。

我在问题中提到的是“为了避免重复代码,我决定为GraphRequest创建一个类。”我在活动中获取数据没有问题。我想要实现的是从任何类获取JSONObject,只需调用
JSONObject object=fbRequest.getGraphApi(路径,令牌)而不生成新的请求函数。如果要在创建构造函数后立即获取对象,则必须等待响应(因为
.executeAsyc()
),然后使用getObject()。可以通过在
FacebookRequest
constructorYes@Matteo中将
.executeAsync()
替换为
.executeAndWait()
来完成。你是对的,我也有同样的问题,我用这个解决方案解决了。
JSONObject object = fbRequest.getObject();