Страница 1 из 1

Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 14:26
Colombo
Друзья, подскажите плиз. Из активити строю диалог и вызываю его. В активити, допустим, есть текстовое поле а0. в диалоге есть текстовое поле б0. Могу ли я при нажатии кнопки в диалоге заменить поле а0 значением из поля б0. И если да, то как его определить? Наоборот все отлично получается.

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 14:53
doter.ua
Интерфейсами или паблик методом (в конструктор диалога передать активити, скастить обратиться к паблик переменной)
((MyActivity) mActivity).myPublicString;

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 15:06
Colombo
через глобальные переменные все работает, меня интересует принципиально, можно ли сделать так как указано в топике.
Дело в том, что я недавно начал изучать программирование под андроид, может я что-то недопонял или упустил.
В активити я определяю элемент TextView a0 = (TextView) findViewByID(R.id.a0);
Сформулирую вопрос иначе: из своего кастомного диалога я могу напрямую обратиться к этому объекту или нет?

Если нельзя, то сделаю ожидание получения результата выполнения диалога с записью в глобальную переменную и после этого сделаю отображение значения в родительском активити.

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 15:18
Colombo
да, Спасибо за быстрый ответ! Прочитал внимательнее и появился вопрос:
doter.ua писал(а):в конструктор диалога передать активити, скастить)
можно на примере проказать передачу активити в конструктор диалога и обращение к ней из него?

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 15:40
Foenix
можно же почитать урок о возвращении значения из диалога..

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 16:34
KamiSempai
doter.ua писал(а):Интерфейсами...
Годный совет.
doter.ua писал(а):...или паблик методом...
А вот это уже хуже.
doter.ua писал(а):...в конструктор диалога передать активити...
Вообще убийственный совет. Ничего, что конструктор фрагмента не должен иметь параметров?
doter.ua писал(а):...обратиться к паблик переменной)
((MyActivity) mActivity).myPublicString;
А это вообще огонь!!! doter.ua, тебя пора объявить худшим советчиком форума. Без обид, но что не совет от тебя, то пример как делать не нужно.

Самый грамотный совет дала Foenix. Я ее немного дополню. Вот урок про фрагменты http://startandroid.ru/ru/uroki/vse-uro ... ivity.html Глава "Обработка в Activity события из фрагмента".

Там еще показаны примеры с прямым изменением свойств, но я так делать не советую. Можно расценивать это как учебный пример, но не как руководство к действию. Иначе теряется независимость фрагмента от внешней среды, что в свою очередь убивает весь смысл фрагментов, то, ради чего они создавались.

Как бонус, даю ссылку на недавно вышедшую статью на Хабре, про общение между фрагментами. Может пригодится.
http://habrahabr.ru/post/259805/#first_unread

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 17:10
doter.ua
KamiSempai писал(а):Вообще убийственный совет. Ничего, что конструктор фрагмента не должен иметь параметров?
Я имел в виду кастомный диалог который экстендится от DialogFragment.
KamiSempai писал(а):((MyActivity) mActivity).myPublicString; А это вообще огонь!!!
Норм варик для диалога, который используется только в одном активити. Не всегда есть смысл заморачиваться над универсальностью решения и тратить в 10 раз больше времени на вещи, которые хоть и правильнее, но не пригодятся. При грамотном использовании "быдло-велосипеды" облегчают жизнь, а не наоборот http://stackoverflow.com/a/12659795.

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 19:52
KamiSempai
doter.ua писал(а):
KamiSempai писал(а):Вообще убийственный совет. Ничего, что конструктор фрагмента не должен иметь параметров?
Я имел в виду кастомный диалог который экстендится от DialogFragment.
Еще раз повторю, конструктор фрагмента не должен иметь параметров. Это касается любых его проявлений. В том числе екстеншинов от DialogFragment.
doter.ua писал(а):
KamiSempai писал(а):((MyActivity) mActivity).myPublicString; А это вообще огонь!!!
Норм варик для диалога, который используется только в одном активити. Не всегда есть смысл заморачиваться над универсальностью решения и тратить в 10 раз больше времени на вещи, которые хоть и правильнее, но не пригодятся...
Многие мои коллеги таково же мнения об экономии времени. Только вот почему-то, в отличии от них, я всегда вовремя ухожу с работы, и мне почти не приходится работать сверхурочно. Что я делаю не так?

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 11 июн 2015, 20:14
doter.ua
KamiSempai писал(а):
doter.ua писал(а):
KamiSempai писал(а):Вообще убийственный совет. Ничего, что конструктор фрагмента не должен иметь параметров?
Я имел в виду кастомный диалог который экстендится от DialogFragment.
Еще раз повторю, конструктор фрагмента не должен иметь параметров. Это касается любых его проявлений. В том числе екстеншинов от DialogFragment.
doter.ua писал(а):
KamiSempai писал(а):((MyActivity) mActivity).myPublicString; А это вообще огонь!!!
Норм варик для диалога, который используется только в одном активити. Не всегда есть смысл заморачиваться над универсальностью решения и тратить в 10 раз больше времени на вещи, которые хоть и правильнее, но не пригодятся...
Многие мои коллеги таково же мнения об экономии времени. Только вот почему-то, в отличии от них, я всегда вовремя ухожу с работы, и мне почти не приходится работать сверхурочно. Что я делаю не так?
Так-то при определении конструктора вызывается супер с дефолтными параметрами.

Re: Изменение элемента Activity из дочернего диалога

Добавлено: 15 июн 2015, 09:38
Colombo
KamiSempai писал(а):Самый грамотный совет дала Foenix. Я ее немного дополню. Вот урок про фрагменты http://startandroid.ru/ru/uroki/vse-uro ... ivity.html Глава "Обработка в Activity события из фрагмента".
Это именно то, что я хотел найти. Спасибо огроменное! Все досконально прочитать не удается, изучаю по мере возникновения необходимости.