2016-03-04 3 views
0

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

Запускает фрагмент в фрагменте анти-шаблона для Android?

Хотелось бы услышать мнение об этом.

+0

Не знаю почему это будет анти-шаблон, если есть документация на нем ... http://developer.android.com/training/basics/fragments/communicating.html –

+0

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

+0

@ cricket_007 Если вы прочитали эту документацию, связь происходит через активность и с использованием интерфейсов. Имея фрагменты, которые непосредственно говорят друг с другом (например, к примеру), ломает принцип фрагментов, являющихся самостоятельными частями логики/пары взглядов, на мой взгляд. – kha

ответ

2

Да, это абсолютно анти-шаблон, помните, что вам нужно видеть активность как контейнер и фрагменты как независимые субэлементы, так же как и ответственность за управление фрагментами. 1. Если у вас есть активность Post, вы можете иметь фрагмент PostText, фрагмент PostImage и все это управляется действием, каждый фрагмент привязывается к Activity.

+0

Но если вы используете представление Master Detail на маленьком экранном устройстве, Fragments имеют обратный вызов для Activity, который должен быть заменен другим фрагментом. Это очень распространенная картина. –

+0

Спасибо. Так какой путь лучше? Я получаю данные от сервера в действии в функции onCreate и передаю данные в фрагмент для установки сетевого адаптера. Или я получаю данные от сервера в фрагменте и адаптере установки и перехожу к активности? – user3882878

+0

@ cricket_007 Да, нужно реализовать двойную панель .. тоже – user3882878

0

Общепринятая практика заключается в том, что внутри фрагмента может быть вложен фрагмент, даже если это можно сделать. Тем не менее, было бы лучше иметь активность в качестве центрированного контейнера для всех ваших фрагментов. Вы можете использовать EventBus (GreenRobot/Otto) для разделения проблем и выполнения всех вызовов API в другом классе и отправки результатов, подписавшись на это событие.

+0

Я пытаюсь использовать rxandroid. У вас есть образец кода? передача данных обратно на активность с помощью rxandroid? – user3882878

Смежные вопросы