Проблемы с AsyncTask и обновлением пользовательского интерфейса с помощью ProgressUpdate и Listeners - PullRequest
2 голосов
/ 05 июня 2011

Я получаю ошибку «CalledFromWrongThreadException» при попытке обновить TextView (через прослушиватель) из AsyncTask onProgressUpdate.

Если я пытаюсь обновить тот же TextView из onPostExecute, все работает.

Я тестировал с использованием кода на основе https://github.com/commonsguy/cw-android/tree/master/Service/WeatherAPI

(с небольшим модом, который выполняет onProgressUpdate в doInBackgroundMethod и добавляет переопределение onProgressUpdate)

Любое предложение по исправлению будет наиболее ценно.

Ответы [ 2 ]

4 голосов
/ 05 июня 2011

Вы звоните onProgressUpdate() из своего кода?Ты не должен этого делать.Используйте метод publishProgress().

0 голосов
/ 05 июня 2011

onProgressUpdate не работает в потоке пользовательского интерфейса, поэтому вы не можете получить доступ к представлениям из этого метода. Если вы хотите обновить прогресс, вы должны найти способ синхронизировать вашу AsyncTask с вашей деятельностью. Я использую способ создания интерфейса с такими методами, как onBegin, onUpdate и onFinish. Вы должны реализовать этот интерфейс в своем основном классе деятельности. Тогда у вас должен быть экземпляр вашей активности внутри вашего AsyncTask. В методе onProgressUpdate вы просто вызываете метод onUpdate в своей деятельности и обновляете макет. Надеюсь, я объяснил это достаточно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...