在登录表单之前收到onActivityResult

Kos*_*din 1 android facebook login

在facebook教程中,我看到了这个示例代码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    facebook.authorizeCallback(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

使用此代码我收到:onAuthFail,错误="已取消操作".

删除

super.onActivityResult(requestCode, resultCode, data);
Run Code Online (Sandbox Code Playgroud)

它工作正常.

所以我的问题是:在哪里放置super.onActivityResult(requestCode,resultCode,data)?在facebook回调之前,之后或删除它.在没有调用super.onActivityResult的时刻 - 代码工作正常.可以丢失导致问题吗?

更新:

我在清单中使用它:

<activity android:launchMode="singleInstance" android:name=".profile.LoginForm" 
Run Code Online (Sandbox Code Playgroud)

android:screenOrientation ="portrait"android:noHistory ="true">

这会产生问题吗?

UPDATE2:

将"singleInstance"放入清单的原因是:避免重新启动我的登录表单.这个问题迫使当前出现问题.

小智 5

关于你的更新:

android:launchMode="singleInstance" 
Run Code Online (Sandbox Code Playgroud)

确实会导致问题startActivityForResult()onActivityResult().请参阅launchMode文档:

另一方面,"singleInstance"活动不允许其他活动成为其任务的一部分.这是任务中唯一的活动.如果它启动另一个活动,则该活动将分配给另一个任务.

这意味着启动的facebook auth活动不是您当前任务的一部分,因此无法提供任何结果.如果您对此进行调试,您应该注意到onActivityResult()在子活动开始后立即调用(这对于获得正确/有用的结果来说为时尚早).

我会说你的launchMode更改为不同的东西(也没有singleTask,它有相同的问题).

我不确定超类方法如何影响这个,因为你声称这个修复了它.理论上这应该永远不会有效singleInstance.