2015-12-13 2 views
0

Официальный android documentation предполагает, что передача данных из фрагмента в действие должна выполняться путем определения интерфейса в фрагменте, а затем его реализации в действии.выборочно передавать информацию из фрагмента в активность

Однако скажите, что у вас есть фрагмент, который используется несколькими действиями, и что вам нужно передать данные только для определенной активности. Поскольку это Java, для этого решения требуется Я реализую интерфейс для всех видов деятельности, что не является жизнеспособным решением IMHO.

Какие существуют методы и рекомендуется передавать данные из фрагмента только для определенной активности?

+1

Включить 'getActivity()' в класс «определенной активности», а затем вызвать метод на нем. – CommonsWare

+0

@CommonsWare - Хорошая точка. Вы знаете, почему в документации предлагается использовать интерфейс над 'getActivity()'? – nbubis

+0

Если существует N возможных действий хостинга, обычно связь между фрагментом и этими действиями одинакова. Следовательно, рекомендация для интерфейса на основе связи. Ваша ситуация не соответствует этому. Документация не собирается пытаться документировать все шаблоны. Черт возьми, учитывая, что я, возможно, написал Google, я рад, когда они охватывают * любые * шаблоны. – CommonsWare

ответ

1

Я иногда решал это, отправив широковещательное сообщение из фрагмента с помощью пучка или другой структуры данных в широковещательный приемник в этом действии. Он может быть не совсем каноническим, но он работает и не требует, чтобы вы реализовали что-либо в действиях, которые не должны воздействовать на сообщение из фрагмента.

+0

У вас есть пример кода или ссылки на такой код? – nbubis

+0

Это просто стандартная трансляция. Создайте намерение и отправьте его с помощью sendBroadcast в фрагменте и обработайте его так же, как и любой другой в BroadcastReceiver. Я немного обновлю свой код кода, но до сих пор вот пример: http://stackoverflow.com/questions/3907713/how-to-send-and-receive-broadcast-message – alzee

+0

Отто библиотека делает то же самое, но проще, читается и т. д. –

1

Для такой же цели я использую Otto library. Он отлично подходит для создания кода, который очень отделен от других частей приложения. Отто - очень простая библиотека, более продвинутые разработчики переходят на RX Java. Территория

+0

Спасибо. Но было бы неплохо иметь решение «во вселенной». – nbubis