2015-04-03 7 views
0

Существует один основной вид деятельности (A) и два фрагмента (F1 и F2). Оба фрагмента получили заявление setRetainInstance(true);. F2 имеет статическое поле b. A пробегает F1. F1 запускает F2 с помощью диспетчера фрагментов после нажатия кнопки или что-то в этом роде. Поэтому создаю F2 intsance, задайте поле b с помощью метода setter и поместите его в диспетчер фрагментов. Это хороший подход или нет? Использует ли пакет единственный «хороший» способ передачи данных между фрагментами? И что, если b не является статическим? Это меняет ситуацию?Можно ли передавать данные между фрагментами?

+1

Я не понимаю вопроса, но обратимся к нескольким пунктам ... Во-первых, «Фрагмент» (например, «Активность» должен НИКОГДА не показывать какие-либо «публичные статические» поля или методы с намерением любого другого компонент приложения, к которому они обращаются. Во-вторых, если «F2» не является дочерним «фрагментом» «F1», тогда вся связь между ними должна выполняться с помощью «Активность». «Фрагмент» должен * НИКОГДА не создавать другой «Фрагмент», второй - ребенок. – Squonk

+0

try eventbus otto http://square.github.io/otto/ –

+0

Ближе к этому объясните причину – Tony

ответ

0

Ваш путь ТАКЖЕ способ передачи данных между FragmentsНО следует использовать только в то время, когда мы должны Retain в State из Fragment т.е., когда все мы хотим, чтобы сохранить состояние Fragment таких в Button собственности visible и invisible состояний мы используем setRetainInstance(true);

0

Фрагмент предназначается, чтобы быть независимым и многоразовые. Вы не должны использовать static для таких операций. Статическое поле не устраивает память управление тоже. Используйте пакет, который может быть полезным во многих отношениях, включая savedInstanceState

Только представьте себе ситуацию, когда вам нужно повторно использовать фрагмент В нескольких раз в одном экране. Это статическое поле не сможет хранить несколько значений. Не так ли?

Вы должны просто следовать стандартным практикам, поскольку они разработали его для обработки многих сценариев, которые мы, возможно, не знаем. Просто отправляйтесь на расслоение.

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