startActivityForResult在没有正确结果的情况下立即返回

Dra*_*ken 2 android android-intent facebook-android-sdk

我正在使用facebook sdk登录用户.

我打电话给我创建的只有facebook登录的活动,并且应该将结果返回到原始活动.

以下是我如何调用它(它来自自定义组件的内部,这getContext()就是使用它的原因):

Intent intent = new Intent(getContext(), FacebookAuthenticationActivity.class);
Log.d(TAG, "Starting facebook authentication for result");
((Activity)getContext()).startActivityForResult(intent, REQUEST_FACEBOOK);
Run Code Online (Sandbox Code Playgroud)

在这里,我想要回应:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    Log.d(TAG, "Result from something!");
    if(requestCode == LoginWidget.REQUEST_FACEBOOK) {
        if(resultCode == RESULT_OK && intent != null) {
            Log.d(TAG, "Result from facebook received!");
            mLoginWidget.onFacebookLoginSucceeded(intent);
        }
    }
    super.onActivityResult(requestCode, resultCode, intent);
}
Run Code Online (Sandbox Code Playgroud)

在facebook活动中,它是来自facebook开发者页面的代码.该代码中没有错误...由于一些奇怪的原因,活动在调用onActivityResult之前调用了onCreateFacebookAuthActivity.

我写的coode是记录用户,获取一些信息,最后调用:

Intent intent = new Intent();
intent.putExtra("user_json", response);

Log.d(TAG, "Setting result to: " + intent);
setResult(RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)

在查看日志后,我得到的是:

07-11 16:34:27.992: D/LoginWidget(6863): Starting facebook authentication for result
07-11 16:34:27.992: D/ProgramActivity(6863): I am starting an activity to get a result!
07-11 16:34:28.101: D/ProgramActivity(6863): Result from something!
07-11 16:34:40.875: D/Facebook-authorize(6863): Login Success! access_token=xxx expires=1347195352881
07-11 16:34:40.875: D/FacebookAuthentication(6863): User accepted our app in facebook!
07-11 16:34:42.351: D/FacebookAuthentication(6863): Setting result to: Intent { (has extras) }
Run Code Online (Sandbox Code Playgroud)

所以我没有想法...出于某种原因,当我调用此活动时,它立即调用onActivityResult没有结果的父项,然后,它会登录,设置实际结果,调用完成,并且永远不会onActivityResult使用真实响应调用.

我在这里错过了什么吗?我是否必须为此活动设置特定标志才能正确返回结果?

这只是一个简单的活动,有一堆异步的facebook调用,然后回调结果......

UPDATE

为了更清楚,我没有从这段代码中得到任何错误.问题是,当我设置结果时,在登录后,原始活动不会收到结果.

Dra*_*ken 6

答案就在这里.此"功能"不允许开始使用的singleInstace活动调用结果活动.

我改变了我的活动singleTop,它现在可以工作了.