Тост не отображается в AsyncTask

У меня есть простое приложение, которое отправляет изображение (в кодировке Base64) на сервер, сервер получает эти данные в порядке, потому что скрипт PHP отправляет мне электронное письмо с прикрепленными данными Base64. Однако после завершения задачи всплывающее уведомление никогда не отображается. Как сделать так, чтобы Toast отображался после публикации данных?

Я думаю, что проблема в контексте.

http://pastie.org/2616524

ОБНОВЛЕНИЕ

Я обновил ссылку, потому что с тех пор я переместил логику загрузки в другой файл .java.


person dotty    schedule 30.09.2011    source источник
comment
вместо getApplicationContext() используйте this   -  person Selvin    schedule 30.09.2011


Ответы (1)


Ваш образец выглядит нормально. Если действие, которому принадлежит переменная mContext, в данный момент активно, оно должно отображаться. Не в другом случае.

попробуйте эту модификацию:

new UploadImage(ImageUploadActivity.this).execute(sentImage);

http://developer.android.com/guide/topics/ui/notifiers/toasts.html
Ошибка контекста Android toast.makeText

EDIT: НЕПРАВИЛЬНОЕ ОБЪЯВЛЕНИЕ ТИПА AsyncTask
ваше объявление AsyncTask выглядит как class UploadImage extends AsyncTask<String, Void, String>

Это означает:

  • это тип параметров для doInBackground(String... arg)
  • это тип прогресса
  • тип результата от doInBackground до onPostExecute

Поэтому измените свою декларацию onPostExecute на это:

protected void onPostExecute(String result)

или измените тип возврата doInBackground на <Bitmap> и измените объявление класса на: class UploadImage extends AsyncTask<String, Void, Bitmap>

http://developer.android.com/reference/android/os/AsyncTask.html

person Marek Sebera    schedule 30.09.2011
comment
не могли бы вы взглянуть на редактирование, пожалуйста, я переместил логику загрузки в другой файл. - person dotty; 30.09.2011
comment
нет проблем даже после модификации, вы можете попробовать заменить this на ImageUploadActivity.this ? - person Marek Sebera; 30.09.2011
comment
Нет, еще ничего. Должен ли мой PHP-скрипт что-либо возвращать? Пока скрипт ничего не возвращает. - person dotty; 30.09.2011
comment
Ok. Я заработал. getApplicationContext() работал нормально, однако проблема была в строке protected void onPostExecute(Bitmap result) {, я забыл, что в конечном итоге изменил переданные данные из объекта Bitmap в объект String. Это не вызывало метод onPostExecute(). - person dotty; 30.09.2011
comment
@dotty в следующий раз добавьте @Override перед переопределенными методами... поэтому, если вы сделаете неправильный метод, компилятор (или IDE) сообщит вам об этом - person Selvin; 30.09.2011
comment
@dotty О, похоже, ты одновременно понял правильное решение: D - person Marek Sebera; 30.09.2011