3

Я столкнулся с проблемой. Мой Activity является контейнером фрагментов, поэтому для связи между активностью и фрагментами я использовал общий подход Callback. В этом случае моя деятельность должна реализовывать множество интерфейсов обратного вызова в зависимости от количества фрагментов.
Мне не нравится жесткий код и нечитаемый код. В моем случае объявление класса может принимать несколько строк для отображения всех интерфейсов.
Я пытаюсь избавиться от этого.Фрагмент обратных вызовов и EventBus на Android

Существует другой подход - использовать шаблон EventBus.
В деятельности

EventBus.getDefault().register(this); 

В фрагменте

EventBus.getDetault().post(new MyEvent(description)); 

и обрабатывать несколько типов событий в деятельности.

Возможно, лучше будет использовать EventBus вместо стандартного подхода обратного вызова?
Или, может быть, я виноват, что в моей деятельности много фрагментов (объект Бога), и лучше использовать действия вместо Фрагмента?

Пожалуйста, подскажите, какой подход лучше?

ответ

1

Ваш interface подход является удивительным, просто идти в ногу с ними, и, возможно, попробовать и ломтик/сделать свой interface статические и добавить все маленькие маленькие void с и return method с до этого интерфейса, так что вы можете просто реализовать один и вызов функций ,

EventBus? как насчет LocalBroadcastReceiver? его вопрос предпочтения и какой из них вы чувствуете, вам подойдет лучше, в конце концов, если вы справляетесь 10000 запрос и ненавижу 100 interface с, вы будете в конечном итоге с помощью 1 и гнездования 99.

& просто забыл, что лучше провести много Fragment вместо Activity, потому что в конце дня Activity жизненный цикл довольно трудно поддерживать секундой все, что вы не можете контролировать Activity х годов прошлого века хорошо все как по сравнению с Fragment с и Fragment является хорошим рабом, служит вам лучше

надеется, что его ценные

3

Для простого управления одной иерархией фрагментов обратный вызов - это самое простое решение. Но подумайте о Activity, содержащем фрагмент, а фрагмент содержит scipe-able ViewPager, и каждая вкладка ViewPager имеет фрагменты A, B, C.

Фрагмент A, B, C отправится в длинное путешествие, чтобы отправить мероприятие матери, и это может быть потеряно интерфейсом между Activity и детьми, когда они восстанавливаются во время crazy complex Android Activity-Fragment lifecycle dances. В этом случае eventbus, такой как otto, может быть хорошим выбором.

Недостаток подхода к шине событий - это трудно поддерживать, откуда происходит событие. Поэтому рекомендуется сохранить несколько отправителей.

+0

Не будет ли свойство 'sender' в MyEvenet дать представление о том, кто поднял это событие? OP имеет 'EventBus.getDetault(). Post (новый MyEvent (описание));' – OmarBizreh

+0

@OmarBizreh // yes. что помогает. но мы должны иметь в виду, что «отправитель» может быть _null_. – Youngjae

+0

Я понимаю, поэтому единственный обратный путь - источник события, я собираюсь начать новый проект и использовать EventBus, есть ли что-нибудь еще, что мне нужно проверить? До сих пор все ссылки SO, которые я видел, упоминают, что источник события, безусловно, хуже всего отступает. – OmarBizreh

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

  • Нет связанных вопросов^_^