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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
#1

OnActivityResult и FragmentActivity - Программирование Android

31.10.2014, 09:10. Просмотров 1072. Ответов 3
Метки нет (Все метки)

Добрый день. Мучился вчера весь день, но так и не одолел проблему. Предыстория: Проект сделан на основе обычной 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
Посмотрите здесь:

Добавление Actionbar в FragmentActivity - Программирование Android
Всем привет! Подскажите пожалуйста как добавить Actionbar в FragmentActivity.

OnActivityResult - Программирование Android
Есть класс Photo public class Photo { Uri mUri; Activity ac; public static final int PHOTO_INTENT_REQUEST_CODE = 100; ...

FragmentActivity -> DialogFragment (утечка памяти) - Программирование Android
Всем привет! Обнаружил у себя такой баг: при повороте экрана - каждый раз увеличивается кол-во вызовов "DF: onCreateView()"... код...

OnActivityResult For Fragment - Программирование Android
Помогите решить проблему. У меня есть ListFragment который отображает фотки из бд и кнопка которая запускает стандартное приложения для...

OnActivityResult() внутри Dialog - Программирование Android
Создаю кастомный диалог: MyDialog = new Dialog(this); MyDialog.setContentView(R.layout.search); По нажатию в диалоге кнопки...

OnActivityResult из сервис во фрагмент - Программирование Android
Здравствуйте,есть акивити которая запускает мой сервис. после запуска, сервис должен отослать данные во фрагмент. по логам показывает...

передача результата в onActivityResult - Программирование Android
Скажи пожалуйста. У меня есть 3 активити. Из первой активити я вызываю активность номер2 с помощью старт АктивитиФоРезалт. В свою...

onActivityResult для Fragment - Программирование Android
public class General_Activity extends FragmentActivity { public class TitleAdapter extends FragmentPagerAdapter { private final...

Два onActivityResult в одной Activity - Программирование Android
Понимаю что видимо это не реально, но тем не менее. Ситуация в Activity уже есть onActivityResult а теперь в той же Activity требуется...

Android.support.v4.app.FragmentActivity не работает в Android Studio - Программирование Android
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня вот это Активити package...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
31.10.2014, 14:08     OnActivityResult и FragmentActivity #2
dubok79, описанные по ссылке грабли я тоже не раз ловил, используя фрагменты. Поэтому пришлось обрабатывать onActivityResult не только в нужном фрагменте, но и во всех родительских, вплоть до вызывающей Activity.
Насколько я понял, у вас проблема с фрагментом типа DialogFragment. Не знаю, поможет это или нет, но лично мне пришлось все такие фрагменты вынести из состава активности в отдельные классы и добавить туда метод public static DialogFragment newInstance(параметры).
К сожалению, использовать DialogFragment в качестве получения и возврата результатов пока не приходилось. В сложных случаях с необъяснимым поведением использую либо временные глобальные переменные (типа static в отдельном модуле), либо SharedPreferences.
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
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
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
Ответ Создать тему
Опции темы

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