2015-03-13 2 views
0

Каковы мои возможности влиять на компонент внутри вещательного приемника?Android - влияет на компонент GUI внутри широковещательного приемника

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

+0

Вы пытались подключить слушателя к BroadcastReceiver, который будет реализован в классе Activity и который обновит графический интерфейс? –

+0

Нет, на самом деле я понятия не имею, как это сделать – Amos

ответ

2

Используйте автобус с событиями (LocalBroadcastManager, Square's Otto, EventBus от greenrobot). Отправьте сообщениена автобус. Пусть ваш уровень пользовательского интерфейса подписывается на шину, когда он имеет значение (например, когда активность/фрагмент находится на переднем плане). Затем ваш уровень пользовательского интерфейса будет уведомлен о подписанном сообщении от шины и может обновить его интерфейс.

+0

У вас есть это на китайском? :) Извините, но я не специалист, чтобы знать, как реализовать то, что вы только что написали. – Amos

+0

@Amos: [Этот каталог] (https://github.com/commonsguy/cw-omnibus/tree/master/EventBus) содержит примеры проектов из [моей книги] (https://commonsware.com/Android), демонстрирующие использование всех трех реализаций шины событий, о которых я упоминал. ['LocalBroadcastManager' является частью пакета поддержки Android] (http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html) и [Отто] (https://github.com/square/otto) и [EventBus] greenrobot (https://github.com/greenrobot/EventBus) имеют свои собственные сайты. – CommonsWare