问题
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
回答1:
after i removed android:launchMode="singleInstance", this misbehaivior stoped
回答2:
I had a similar behaviour on a Samsung Galaxy S4 running Android 4.4.2 API 17. I was starting an Activity with:
Intent intent = new Intent(this, MyActivity.class);
startActivityForResult(intent, CUSTOM_CODE);
However the onActivityResult got called immediately with resultCode=0 (ACTIVITY.RESULT_CANCELED). It was working perfectly fine on other devices.
Based on what @Yarh said, i looked in AndroidManifest and figured out that the Activity that executed the startActivityForResult has android:launchMode="singleInstance".
Removing this line definitely fixed the issue.
回答3:
You have not posted enough code for us to really see what is going on but I would check the following:
When you return from the activity you have just started up using startActivityForResult, please check whether you have setResult to RESULT_OK:
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
来源:https://stackoverflow.com/questions/34108901/startactivityforresult-immediately-returns-0