我已经实现了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);
}
此方法在Activity
和Fragment
类中都相同。
但问题是,当我要求facebook AppInviteContent 显示 AppInviteDialog 时,它在Activity中完全称为onActivityResult方法,但未在Fragment方法中调用。
如果有人有洞察力而不是给我任何建议。欢迎提出任何意见或建议。
答案 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));
这假定调用来自片段内。