Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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
Android 如何在片段中使用FacebookSDK中的LoginManager类?_Android_Facebook_Facebook Login - Fatal编程技术网

Android 如何在片段中使用FacebookSDK中的LoginManager类?

Android 如何在片段中使用FacebookSDK中的LoginManager类?,android,facebook,facebook-login,Android,Facebook,Facebook Login,FacebookSDK中的LoginManager似乎只包含一个带有android.support.v4.app.Fragment参数的方法,而不包含带有android.app.Fragment参数的方法。不幸的是,v4.app.Fragment不是我的选择。我在一个活动和一个v4.app.Fragment中尝试过做同样的事情,而且效果很好。然而,我不能使用这两个 private void init() { callbackManager = CallbackManager.Factor

FacebookSDK中的LoginManager似乎只包含一个带有android.support.v4.app.Fragment参数的方法,而不包含带有android.app.Fragment参数的方法。不幸的是,v4.app.Fragment不是我的选择。我在一个活动和一个v4.app.Fragment中尝试过做同样的事情,而且效果很好。然而,我不能使用这两个

private void init() {
    callbackManager = CallbackManager.Factory.create();
    loginManager = LoginManager.getInstance();

    loginManager.registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    onLoginSuccess(loginResult);
                }

                @Override
                public void onCancel() {
                    onLogInFailed();
                }

                @Override
                public void onError(FacebookException e) {
                    onLogInFailed();
                }
            });
}

private void logIn() {
    Global.log("logging in to facebook");
    Collection<String> permissions = Arrays.asList("public_profile", "email");
    loginManager.logInWithReadPermissions(getActivity(), permissions);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}
private void init(){
callbackManager=callbackManager.Factory.create();
loginManager=loginManager.getInstance();
loginManager.registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
仅登录成功(登录结果);
}
@凌驾
公开作废{
onLogInFailed();
}
@凌驾
公共无效onError(FaceBook例外e){
onLogInFailed();
}
});
}
私有void登录(){
Global.log(“登录facebook”);
收集权限=Arrays.asList(“public_profile”、“email”);
loginManager.logInWithReadPermissions(getActivity(),permissions);
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
所讨论的方法是loginManager.logInWithReadPermissions,它可以将活动或v4.app.Fragment作为参数,但不能采用我需要的片段类型


有人能帮忙吗?

它是在Facebook SDK版本4.8.0(2015年11月11日)中实现的,请看:

添加了对使用本地登录管理器和UI元素的支持 片段(android.app.Fragment)

文件也已更新:

CallbackManager-用于将呼叫路由回Facebook SDK和您的 注册回调。您应该从启动活动中调用它 或ActivityResult调用上的片段

资料来源:


你到底想实现什么目标?LoginManager.getInstance().logInWithReadPermission()接受活动或片段参数。不管是v4.app.Fragment还是app.Fragment,我试着给出一个简单的片段作为参数,但我做不到。我查看了该方法的实现,它只接受v4.app.Fragment。LoginManager类没有提到普通片段类,SDK只支持v4.app.Fragment,因为我们支持回到Gingerbread(android.app.Fragment直到Honeycom才引入)。您需要使用v4.app.Fragment,或者分叉并修改SDK,并用android.app.Fragment替换所有v4.app.Fragment实例。