共享回调在Facebook SDK 4 Android上不起作用

共享回调在Facebook SDK 4 Android上不起作用,android,facebook-sdk-4.0,facebook-share,Android,Facebook Sdk 4.0,Facebook Share,我最近将我的应用程序迁移到FB SDK 4.0,我在共享方面遇到了一些奇怪的问题。共享对话框工作得很好-我可以与Facebook应用程序和WebDialog共享。然而,在成功/失败后,共享回调根本不起作用-因此我甚至不能显示祝酒词或记录任何内容。 我是这样做的: shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() { @Override

我最近将我的应用程序迁移到FB SDK 4.0,我在共享方面遇到了一些奇怪的问题。共享对话框工作得很好-我可以与Facebook应用程序和WebDialog共享。然而,在成功/失败后,共享回调根本不起作用-因此我甚至不能显示祝酒词或记录任何内容。 我是这样做的:

shareDialog.registerCallback(fbManager, new FacebookCallback<Sharer.Result>() {
            @Override
            public void onSuccess(Sharer.Result result) {
                // This doesn't work
                Toast.makeText(f.getActivity(), "You shared this post", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException e) {
                // This doesn't work
                e.printStackTrace();
            }
        });

您必须重写onActivityResult方法, 更新你的方法如下:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  callbackManager.onActivityResult(requestCode, resultCode, data);
}

注册facebookcallback时需要指定requestCode<代码>shareDialog.registerCallback(**,**,requestCode)

不要忘记覆盖:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data); 
  callbackManager.onActivityResult(requestCode, resultCode, data);
}
如果在片段中使用,则还必须添加:

loginBtn = (LoginButton) view.findViewById(R.id.fb_login_button);
loginBtn.setFragment(this);

确保在创建ShareDialog时传递片段(而不是传递活动):

// From within a fragment
ShareDialog dialog = new ShareDialog(this);

然后,您可以将
facebook callbackmanager.onActivityResult()
留在片段的
onActivityResult()方法中。

发布您的整个活动/片段please@DavidJhons更新了我的问题,添加super()调用并没有解决任何问题-仍然没有效果-您把它放在哪里了?关于片段或活动?片段。一切都在我的片段中。把它放在主持活动上哇,我真的没想到它会起作用,谢谢!这有点奇怪,因为我在我的另一个片段上使用了几乎相同的回调,并且调用了回调。顺便说一句,我还删除了我的shareDialog.show(f,composeContent(title,description,link));方法来共享dialog.show(composeContent(标题、描述、链接));因为我好像在用静态的方法。
loginBtn = (LoginButton) view.findViewById(R.id.fb_login_button);
loginBtn.setFragment(this);
// From within a fragment
ShareDialog dialog = new ShareDialog(this);