转发来自 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中调用,而不是在承载登录按钮的我的片段中调用。
现在身份验证将不起作用,除非我在 LoginActivity
的 onActivityResult
片段中显式调用 onActivityResult
方法。因为它是创建并维护 UILifecycleHelper 对象的片段。
我想避免在 LoginActivity
中添加此 "hack",特别是因为,我无法知道 onActivityResult
是否因 Facebook 身份验证过程而被调用.
实现此目标的正确方法是什么?
他们似乎在新的 Facebook SDK(从 4.0 版开始)中发现了这个问题,他们现在允许您在 LoginButton 上注册一个片段。
以下是官方 Facebook Login For Android 指南中的代码片段。
// If using in a fragment
loginButton.setFragment(this);
我正在尝试为我的 android 应用实现 Facebook 登录。但是,我没有按照开发人员 website 的建议使用登录 Activity,而是在单独的片段上添加了 Facebook 登录按钮。该片段只是按住按钮并进行所有处理,否则 LoginActivity 会完成这些处理。 使用单独片段的目的是防止在登录Activity 中执行所有操作,特别是如果 Google+ 等其他登录选项也存在时。
现在的问题是 UiLifecycleHelper 构造函数只接受 Activity 对象进行回调:
UiLifecycleHelper(Activity, StatusCallback)
正因为如此,我一定会做这样的事情:
UiLifecycleHelper(getActivity(), callback)
所以,最终:
@override
onActivityResult(...)
在登录Activity中调用,而不是在承载登录按钮的我的片段中调用。
现在身份验证将不起作用,除非我在 LoginActivity
的 onActivityResult
片段中显式调用 onActivityResult
方法。因为它是创建并维护 UILifecycleHelper 对象的片段。
我想避免在 LoginActivity
中添加此 "hack",特别是因为,我无法知道 onActivityResult
是否因 Facebook 身份验证过程而被调用.
实现此目标的正确方法是什么?
他们似乎在新的 Facebook SDK(从 4.0 版开始)中发现了这个问题,他们现在允许您在 LoginButton 上注册一个片段。 以下是官方 Facebook Login For Android 指南中的代码片段。
// If using in a fragment
loginButton.setFragment(this);