startActivityForResult(...) 立即 returns 0
startActivityForResult(...) immediately returns 0
当我在 Samsung 上调用 startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID);
时(在 HTC 和 Nexus 上一切正常),onActivityResult
requestCode == VK_ID 和结果代码 0 (Cancelled) 在VkAuth Activity 已创建。
父 Activity 有 android:launchMode="singleInstance"
。 startActivityForResult
从附加到父 Activity 的片段调用。
日志
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
您没有发布足够的代码让我们真正看到发生了什么,但我会检查以下内容:
当您return从activity刚开始使用startActivityForResult
时,请检查您是否有setResult
到RESULT_OK
:
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
在我删除 android:launchMode="singleInstance" 后,这种不当行为停止了
我在 Samsung Galaxy S4 运行 Android 4.4.2 API 17 上有类似的行为。
我开始了一个 Activity 与:
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, CUSTOM_CODE);
然而 onActivityResult
立即被调用 resultCode=0
(ACTIVITY.RESULT_CANCELED
)。它在其他设备上运行良好。
根据@Yarh 所说,我查看了AndroidManifest 并发现执行startActivityForResult
的Activity 有android:launchMode="singleInstance"
。
删除这一行确实解决了这个问题。
当我在 Samsung 上调用 startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID);
时(在 HTC 和 Nexus 上一切正常),onActivityResult
requestCode == VK_ID 和结果代码 0 (Cancelled) 在VkAuth Activity 已创建。
父 Activity 有 android:launchMode="singleInstance"
。 startActivityForResult
从附加到父 Activity 的片段调用。
日志
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
您没有发布足够的代码让我们真正看到发生了什么,但我会检查以下内容:
当您return从activity刚开始使用startActivityForResult
时,请检查您是否有setResult
到RESULT_OK
:
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
在我删除 android:launchMode="singleInstance" 后,这种不当行为停止了
我在 Samsung Galaxy S4 运行 Android 4.4.2 API 17 上有类似的行为。 我开始了一个 Activity 与:
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, CUSTOM_CODE);
然而 onActivityResult
立即被调用 resultCode=0
(ACTIVITY.RESULT_CANCELED
)。它在其他设备上运行良好。
根据@Yarh 所说,我查看了AndroidManifest 并发现执行startActivityForResult
的Activity 有android:launchMode="singleInstance"
。
删除这一行确实解决了这个问题。