2013-09-24 4 views
1

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

Я читаю this учебник.

Мне интересно, следует ли мне реализовать это в действии хоста и передать местоположение каждому фрагменту по мере обновления местоположения. Но я не уверен, как это сделать. Поскольку listfragment должен передать его загрузчику, связанному с классом.

Или реализовать обратные вызовы для каждого фрагмента и возможно сохранить ErrorDialogFragment и servicesConnected как члены класса хоста? Или даже в отдельном классе? Чтобы избежать дублирования кода.

Что вы, ребята, думаете?

ответ

0

Одним из вариантов является использование LocalBroadcastManager:

В каждой из ваших фрагментов, которые нуждаются в этом месте, зарегистрировать приемник, скажем, действие «LOCATION_WAS_JUST_UPDATED».

Я не уверен, где вы можете найти место, но оно будет работать в любом случае. Например, если в службе, все, что вам нужно сделать, это вызов:

LocalBroadcastManager.getInstance(mContext).sendBroadcast(new Intent("LOCATION_WAS_JUST_UPDATED")); 

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

+0

Я извлекаю местоположение на основной (основной) деятельности. LocalBroadcastManager действительно кажется хорошей идеей. Но я все еще немного не уверен, как должен протекать поток программ. Поскольку на хосте я должен, вероятно, начать некоторый прогресс, который должен завершиться отдельным фрагментом. – user672009

+0

Ну, это еще проще. Вы должны реализовать функцию getLocation в своей деятельности. Каждое действие должно получить местоположение при запуске с использованием этой функции с помощью 'getActivity'. 'getLocation'. Если местоположение недоступно, покажите загрузчик до получения широковещательной передачи. Или проще, просто разрешите активности показывать загрузчик и показывать только фрагменты при поиске местоположения. У вас слишком много вариантов. –

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