转发来自 Activity 的 Activity 结果到 android 中的片段

Forwarding onActivityResult from Activity to Fragment in android

我正在尝试为我的 android 应用实现 Facebook 登录。但是,我没有按照开发人员 website 的建议使用登录 Activity,而是在单独的片段上添加了 Facebook 登录按钮。该片段只是按住按钮并进行所有处理,否则 LoginActivity 会完成这些处理。 使用单独片段的目的是防止在登录Activity 中执行所有操作,特别是如果 Google+ 等其他登录选项也存在时。

现在的问题是 UiLifecycleHelper 构造函数只接受 Activity 对象进行回调:

UiLifecycleHelper(Activity, StatusCallback)

正因为如此,我一定会做这样的事情:

UiLifecycleHelper(getActivity(), callback)

所以,最终:

@override
onActivityResult(...)

在登录Activity中调用,而不是在承载登录按钮的我的片段中调用。

现在身份验证将不起作用,除非我在 LoginActivityonActivityResult 片段中显式调用 onActivityResult 方法。因为它是创建并维护 UILifecycleHelper 对象的片段。

我想避免在 LoginActivity 中添加此 "hack",特别是因为,我无法知道 onActivityResult 是否因 Facebook 身份验证过程而被调用.

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

他们似乎在新的 Facebook SDK(从 4.0 版开始)中发现了这个问题,他们现在允许您在 LoginButton 上注册一个片段。 以下是官方 Facebook Login For Android 指南中的代码片段。

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