2015-12-05 2 views
-1

Когда я звоню startActivityForResult(new Intent(getActivity(), VkAuth.class), VK_ID); на Samsung (на HTC и Nexus все работает нормально), onActivityResult с requestCode == VK_ID и код результата 0 (Отменено) вызывается до создания VkAuth Activity.
Родительская деятельность имеет android:launchMode="singleInstance". startActivityForResult вызывается из фрагмента, прикрепленного к родительской активности. ВходаstartActivityForResult (...) немедленно возвращает 0

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 
+0

Вы видите что-нибудь подозрительное на логарифме? – pskink

+0

@pskink ничего действительно, активность и фрагменты не вызывает onPause, а затем onActivityResult с результатом 0 – Yarh

+0

Кстати, это ваша деятельность (называемая)? – pskink

ответ

0

после того, как я удалил андроид: launchMode = "SingleInstance", это misbehaivior купирован

0

Вы не отправили достаточно коды для нас, чтобы действительно увидеть, что происходит, но я хотел бы проверить следующее:

Когда вы возвращаетесь из деятельности вы только начали с использованием startActivityForResult, пожалуйста проверить, есть ли у вас setResult к RESULT_OK:

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

Отмена возобновляется после startActivityForResult, но активность 'before' даже создана, поэтому это не точка неуместного setResult – Yarh

0

я имел подобное поведение на Samsung Galaxy S4 под управлением Android 4.4.2 API 17. я начинал деятельность с:

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

Однако onActivityResult получил сразу под названием с resultCode=0 (ACTIVITY.RESULT_CANCELED). Он отлично работал на других устройствах.

Основываясь на том, что сказал @Yarh, я посмотрел в AndroidManifest и выяснил, что активность, которая выполняла startActivityForResult, имеет android:launchMode="singleInstance".

Устранение этой строки, безусловно, решило проблему.

Смежные вопросы