startActivityForResult(...)立即返回0

时间:2015-12-05 17:56:55

标签: android android-intent startactivityforresult

当我在三星上呼叫startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID);时(在HTC和Nexus上一切正常),在创建VkAuth活动之前调用带有requestCode == VK_ID的onActivityResult和结果代码0(已取消)。<登记/> 父活动有android:launchMode="singleInstance"。从附加到父Activity的Fragment调用startActivityForResult。 登录

E/AuthenticationFragment: vkLogIn
E/AuthenticationFragment: startActivityForResult 9101
E/AuthenticationFragment: onPause
E/MainActivity: onPause
E/MainActivity: onActivityResult before super: request - 271245, result - 0
E/AuthenticationFragment: request - 9101, result - 0
E/MainActivity: onActivityResult after super: request - 271245, result - 0
E/AuthenticationFragment: onPause
E/MainActivity: onPause
E/VkAuth: onCreate
E/VkAuth: onResume

3 个答案:

答案 0 :(得分:2)

我删除了android:launchMode =“singleInstance”后,这个误入歧途的

答案 1 :(得分:1)

我在运行Android 4.4.2 API 17的三星Galaxy S4上有类似的行为。 我正在开始一个活动:

Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, CUSTOM_CODE);

然而onActivityResultresultCode=0ACTIVITY.RESULT_CANCELED)立即调用。它在其他设备上运行得非常好。

根据@Yarh的说法,我查看了AndroidManifest,并发现执行startActivityForResult的活动有android:launchMode="singleInstance"

删除此行肯定解决了这个问题。

答案 2 :(得分:-1)

你还没有发布足够的代码让我们真正看到发生了什么,但我会检查以下内容:

当您从刚开始使用startActivityForResult的活动返回时,请检查您是否setResultRESULT_OK

Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);