我正在尝试为我的Android应用程序实现Facebook登录。但是,我没有按开发人员website的建议使用LoginActivity,而是在单独的片段上添加了Facebook登录按钮。这个片段只保存按钮并执行所有处理,否则LoginActivity将完成。 使用单独片段的目的是阻止在LoginActivity中执行所有操作,特别是如果还存在其他登录选项(如Google+)。
现在的问题是UiLifecycleHelper构造函数只接受Activity对象的回调:
UiLifecycleHelper(Activity, StatusCallback)
因此,我必然会做类似的事情:
UiLifecycleHelper(getActivity(), callback)
所以,最终:
@override
onActivityResult(...)
在LoginActivity中调用,而不是在托管登录按钮的片段中调用。
现在,身份验证无法正常运行,除非我从onActivityResult
onActivityResult
明确调用LoginActivity
中的LoginActivity
方法。因为它是创建并维护UILifecycleHelper对象的片段。
我想避免添加这个" hack"在onActivityResult
中,特别是在那之后,我无法知道{{1}}是否因Facebook身份验证过程而被调用。
实现这一目标的正确方法是什么?
答案 0 :(得分:1)
看起来他们在新的Facebook SDK(v 4.0以后)中发现了这个问题,他们现在让你在LoginButton上注册一个片段。 以下是官方Facebook Login For Android指南中的代码段。
// If using in a fragment
loginButton.setFragment(this);