2012-02-21 2 views
3

Здесь у нас очень тяжелая проблема с Honeycomb's ActionBar, и мне было интересно, нашел ли кто-нибудь еще решение. Сама проблема довольно проста:Обновление ActionBar refresh spinner в onResume()

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

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

+0

Прогресс на этом? Ваш обходной путь кажется, ну, обходным путем. – theomega

+0

Я продолжал использовать обходное решение из-за отсутствия лучшего решения. – Matthias

ответ

0

Так что я попытался использовать invalidateOptionsMenu, как указано в вопросе How to update a menu item shown in the ActionBar?, но это не имело никакого эффекта.

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

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