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

Интерфейс, диалоги, темы, стили, меню
Ответить
Colombo
Сообщения: 5
Зарегистрирован: 11 июн 2015, 14:17

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

Сообщение Colombo » 11 июн 2015, 14:26

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

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 11 июн 2015, 14:53

Интерфейсами или паблик методом (в конструктор диалога передать активити, скастить обратиться к паблик переменной)
((MyActivity) mActivity).myPublicString;
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Colombo
Сообщения: 5
Зарегистрирован: 11 июн 2015, 14:17

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

Сообщение Colombo » 11 июн 2015, 15:06

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

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

Colombo
Сообщения: 5
Зарегистрирован: 11 июн 2015, 14:17

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

Сообщение Colombo » 11 июн 2015, 15:18

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

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

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

Сообщение Foenix » 11 июн 2015, 15:40

можно же почитать урок о возвращении значения из диалога..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 июн 2015, 16:34

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
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 11 июн 2015, 17:10

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

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

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

Сообщение KamiSempai » 11 июн 2015, 19:52

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

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 11 июн 2015, 20:14

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

Colombo
Сообщения: 5
Зарегистрирован: 11 июн 2015, 14:17

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

Сообщение Colombo » 15 июн 2015, 09:38

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

Ответить