Обновить ActionBar из AsyncTask - PullRequest
       15

Обновить ActionBar из AsyncTask

2 голосов
/ 22 декабря 2011

У меня есть ListView Activity, который использует AsyncTask для загрузки данных из базы данных.В этом действии есть меню параметров, которое проверяет, есть ли какие-либо элементы данных в представлении списка действий в onPrepareOptionsMenu().

. Если есть элементы, я включаю один из параметров, отображаемых на ActionBarэто позволяет пользователю удалять элементы.

Теперь, когда начинается действие, запускается AsyncTask, и, пока OnPrepareOptionsMenu () выполняется, пока AsyncTask еще работает, этот пункт меню никогда не включается, если только устройствопереворачивается, и данные списка просмотра передаются в качестве экземпляра, минуя AsyncTask.

Итак, в AsyncTask onPostExecute() я вызываю invalidateOptionsMenu(), но это не похоже на меню для обновления (яиметь код отладки в onCreateOptionsMenu() и onPrepareOptionsMenu(), и ни один не запускается).Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Проблема связана с неверным значением глобальной переменной.Я направлял код внутри метода onPrepareOptionsMenu() с глобальным логическим значением, которое никогда не было истинным, и поместил оператор отладки ВНУТРИ логическую проверку ..., в результате чего оператор отладки никогда не выполнялся.

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

1 голос
/ 22 декабря 2011

Вы можете попробовать создать глобальное логическое значение, например haveData, в своей активности, а после onPostExecute() установить логическое значение соответственно на true или false.Затем, основываясь на логическом значении, выполните проверку вашего onPrepareOptionsMenu() и активируйте соответствующий пункт меню.

В прошлый раз, когда я попробовал, это сработало для меня, я не уверен, почему это не для вас.Выполните отладку, если она не работает, сообщите нам, где она не выполняется.

...