Форум программистов, компьютерный форум CyberForum.ru

OnActivityResult и FragmentActivity - Android

Войти
Регистрация
Восстановить пароль
 
dubok79
 Аватар для dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
31.10.2014, 09:10     OnActivityResult и FragmentActivity #1
Добрый день. Мучился вчера весь день, но так и не одолел проблему. Предыстория: Проект сделан на основе обычной Activity. В ней есть кнопка, по которой вызывалась другая активити для ввода результата (putExtra) через startActivityForResult. После завершения с resultCode = RESULT_OK в onActivityResult получались введенные данные и происходила их обработка. Понадобилось сделать диалог для выбора нескольких записей. Т.к. нонче showDialog является deprecated, то решил освоить DialogFragment. Все сделал. Все работает. Но при вызове этого диалога используется метод getSupportedFragmentManager, а его в Activity (minSDKVersion = 9) нету, есть только FragmentActivity из support.v4 библиотеки. Что собственно и сделал. Никаких ошибок, диалог работает. Открываю активити на ввод данных, ввожу, закрываю и .... тишина. Оказывается onActivityResult сработал сразу же при вызове startActivityForResult с resultCode = 0 = RESULT_CANCELED. Рыл интернет. Везде проблема с Fragment, а не с FragmentManager. Вот ссылка1 и ссылка2, но у меня ничего не получилось. Половины методов нет и я не понимаю, что там пытаются сделал. Прошу помощи разобраться. Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2014, 09:10     OnActivityResult и FragmentActivity
Посмотрите здесь:

Android onActivityResult для Fragment
передача результата в onActivityResult Android
Android OnActivityResult For Fragment
Android OnActivityResult из сервис во фрагмент
Android.support.v4.app.FragmentActivity не работает в Android Studio Android
OnActivityResult Android
Android OnActivityResult() внутри Dialog
Android FragmentActivity -> DialogFragment (утечка памяти)
Android Добавление Actionbar в FragmentActivity
Android Два onActivityResult в одной Activity

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
31.10.2014, 14:08     OnActivityResult и FragmentActivity #2
dubok79, описанные по ссылке грабли я тоже не раз ловил, используя фрагменты. Поэтому пришлось обрабатывать onActivityResult не только в нужном фрагменте, но и во всех родительских, вплоть до вызывающей Activity.
Насколько я понял, у вас проблема с фрагментом типа DialogFragment. Не знаю, поможет это или нет, но лично мне пришлось все такие фрагменты вынести из состава активности в отдельные классы и добавить туда метод public static DialogFragment newInstance(параметры).
К сожалению, использовать DialogFragment в качестве получения и возврата результатов пока не приходилось. В сложных случаях с необъяснимым поведением использую либо временные глобальные переменные (типа static в отдельном модуле), либо SharedPreferences.
dubok79
 Аватар для dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
31.10.2014, 14:27  [ТС]     OnActivityResult и FragmentActivity #3
CoolMind, нет, как раз DialogFragment работает как часы, а вот ранее использованные методы (ну просто активити открывается. В нем вводятся данные. Заносятся в полученный интент через putExtra и закрывается finish-ем.). Так вот если основное активити Activity то onActivityResult вызывался при закрытии вызванного активити, а когда вместо Activity использую FragmentActivity туда после закрытия я уже не попадаю. Видать придется пока отказаться от DialogFragment.

Добавлено через 7 минут
CoolMind, а на счет временных переменных. Как отловить, что активити, которое для ввода данных, закрылось?

Добавлено через 6 минут
Хм... убрал из манифеста с MainActivity параметр android:launchMode= "singleInstance" и все заработало...
А раньше то работало...
Пойду почитаю еще раз про launchMode

Пока задача решена. Спасибо.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
31.10.2014, 16:27     OnActivityResult и FragmentActivity #4
dubok79, я рад, что у вас получилось.
Странно тут на форуме время установлено, на 2 часа раньше московского, что ли.
В общем, событие закрытия активности ловится либо на onStop, либо на onDestroy, но в одном из онлайн-курсов я увидел, что лучше использовать onPause (для сохранения данных), поскольку предыдущие 2 события могут и не выполниться.

Добавлено через 1 час 24 минуты
dubok79, хотел ещё добавить, что если активность вызывается из активности напрямую, то можно попытаться работать с событием onRestart родительской активности. Правда, оно, вроде, может срабатывать и в некоторых других случаях.
Yandex
Объявления
31.10.2014, 16:27     OnActivityResult и FragmentActivity
Ответ Создать тему
Опции темы

Текущее время: 12:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru