3

When I call startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID); on Samsung (on HTC and Nexus everything works fine), onActivityResult with requestCode == VK_ID and result code 0 (Cancelled) is called before the VkAuth Activity is created.
The parent Activity has android:launchMode="singleInstance". startActivityForResult is called from a Fragment attached to the parent Activity. Log

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
4

3 回答 3

5

在我删除了 android:launchMode="singleInstance" 之后,这种错误行为停止了

于 2015-12-17T10:38:37.840 回答
2

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

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

然而,onActivityResult立即用resultCode=0( ACTIVITY.RESULT_CANCELED) 调用。它在其他设备上运行良好。

根据@Yarh 所说,我查看了 AndroidManifest 并发现执行的 ActivitystartActivityForResult具有android:launchMode="singleInstance".

删除这条线肯定解决了这个问题。

于 2017-08-09T15:46:39.433 回答
-1

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

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

Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
于 2015-12-05T18:51:57.710 回答