Обновление спиннера обновления ActionBar в onResume () - PullRequest
3 голосов
/ 21 февраля 2012

Мы сталкиваемся с действительно болезненной проблемой с ActionBar здесь, и мне было интересно, нашел ли кто-нибудь еще решение. Сама проблема довольно проста:

Мы часто запускаем фоновые задачи в действиях onCreate или onResume, поскольку на большинстве наших экранов должны отображаться данные, загруженные из веб-службы. Пока эти задачи выполняются, мы показываем спиннер обновления ActionBar и анимируем его. Проблема в том, что onCreate и onResume выполняются раньше, чем onCreateOptionsMenu, поэтому в тот момент, когда мы запускаем задачу, спиннер обновления даже не существует. Следовательно, это не будет оживлять.

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

1 Ответ

0 голосов
/ 22 февраля 2012

Поэтому я попытался использовать invalidateOptionsMenu, как указано в вопросе Как обновить пункт меню, показанный на панели действий? , но это не имело никакого эффекта.

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

...