startActivityForResult(..)立即返回0



当我在Samsung上调用startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID);时(在HTC和Nexus上一切正常),在创建VkAuth活动之前,会调用具有requestCode==VK_ID和结果代码0(Cancelled)的onActivityResult
父"活动"具有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

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

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

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

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

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

删除这条线路无疑解决了问题。

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

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

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

相关内容

  • 没有找到相关文章

最新更新