在Android中将onActivityResult从Activity转移到Fragment

时间:2015-03-25 15:39:27

标签: android facebook android-fragments android-activity facebook-login

我正在尝试为我的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身份验证过程而被调用。

实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

看起来他们在新的Facebook SDK(v 4.0以后)中发现了这个问题,他们现在让你在LoginButton上注册一个片段。 以下是官方Facebook Login For Android指南中的代码段。

 // If using in a fragment
    loginButton.setFragment(this);