Toast 在 AsyncTask 内时无法显示

发布于 2024-12-07 03:29:45 字数 310 浏览 0 评论 0原文

我有一个简单的应用程序,它将图像(Base64 编码)发送到服务器,服务器可以很好地获取此数据,因为 PHP 脚本向我发送了一封附有 Base64 数据的电子邮件。然而,任务完成后,吐司永远不会显示。数据发布后如何显示Toast?

我认为这个问题是在上下文中的。

http://pastie.org/2616524

更新

我已经更新了链接,因为我此后已将上传逻辑移至不同的 .java 文件中。

I have a simple application which sends an image (Base64 encoded) to a server, the server gets this data fine because the PHP script sends me an email with the Base64 Data attached. However, after the task gets completed the toast never shows. How do I take the Toast get shown after the data gets posted?

I think the issue is within the context.

http://pastie.org/2616524

UPDATE

I have updated the link, because i have since moved the upload logic into a different .java file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丿*梦醉红颜 2024-12-14 03:29:45

你的样品看起来不错。如果 mContext 变量所属的 Activity 当前处于活动状态,则应该显示。其他情况则不然。

尝试此修改:

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

http://developer.android.com/guide/主题/ui/notifiers/toasts.html
Android toast.makeText上下文错误

编辑:AsyncTask的类型声明错误
您的 AsyncTask 声明看起来像 class UploadImage extends AsyncTask

这意味着:

  • doInBackground(String... arg)< 的参数类型/code>
  • 是进度的类型
  • ,是从 doInBackgroundonPostExecute 的结果类型,

因此将您的 onPostExecute 声明更改为此:

protected void onPostExecute(String result)

或更改的返回类型将 doInBackground 更改为 并将类声明更改为: class UploadImage extends AsyncTask

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

Your sample look OK. If Activity, to which mContext variable belongs is currently active, it should show. Not in other case.

try this modification:

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

http://developer.android.com/guide/topics/ui/notifiers/toasts.html
Android toast.makeText context error

EDIT: WRONG TYPE DECLARATION OF AsyncTask
your AsyncTask declaration looks like class UploadImage extends AsyncTask<String, Void, String>

This means:

  • is type of params to doInBackground(String... arg)
  • is type of progress
  • is type of result from doInBackground to onPostExecute

So change your onPostExecute declaration to this:

protected void onPostExecute(String result)

or change return type of doInBackground to <Bitmap> and change class declaration to: class UploadImage extends AsyncTask<String, Void, Bitmap>

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文