Facebook callbackManager方法onActivityResult没有调用Fragment onActivityResult方法

时间:2016-06-21 10:07:10

标签: android facebook facebook-graph-api android-fragments android-studio

我已经实现了Facebook整合,并且在初始化的一部分工作正常,甚至Facebook APPID也适用于应用程序。

让我更详细地解释一下: 我已经在onCreate()添加并初始化了Facebook。

// Facebook callback manager
callbackManager = CallbackManager.Factory.create();

同样在片段活动中覆盖片段中的方法。

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

此方法在ActivityFragment类中都相同。

但问题是,当我要求facebook AppInviteContent 显示 AppInviteDialog 时,它在Activity中完全称为onActivityResult方法,但未在Fragment方法中调用。

如果有人有洞察力而不是给我任何建议。欢迎提出任何意见或建议。

4 个答案:

答案 0 :(得分:2)

根据facebook documentations,在一个片段中,您应该调用此方法

> Java 

loginButton.setFragment(this);
> Kotlin

loginButton.fragment = this

答案 1 :(得分:0)

无法在stackoverflow中找到解决方案,所以我自己做了

- >在java类globalvaluesclass中添加callbackmanager,可以通过activity和fragment

访问它

- >在您父项活动的onCreate中添加此项                Globalvalues.callbackManager = CallbackManager.Factory.create();

- >在您的片段中启动您的Facebook登录类              Globalvalues.callbackManager

LoginManager.getInstance()。registerCallback(Globalvalues.callbackManager,                 新的FacebookCallback(){

#all that fb stuff

}

- >在父活动中覆盖onactivity结果。

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

       fragment.customOnActivityResult(requestCode, resultCode, data);

}

and in your fragment add a function for example as shown below

      public static void customOnActivityResult(){
          super.onActivityResult(requestCode, resultCode, data);
    Globalvalues.callbackManager.onActivityResult(requestCode, resultCode,
      data);

  }

                                                       and you're Welcome.

答案 2 :(得分:0)

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

答案 3 :(得分:0)

当我使用以下代码启动登录时遇到了这个问题:

LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList(EMAIL));

所以我明确要求使用Activity实例作为登录结果的接收者。解决方案是提供片段实例,为此存在适当的重载方法:

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList(EMAIL));

这假定调用来自片段内。