【问题标题】:Picasso - Showing Toast/Message when image saved to diskPicasso - 当图像保存到磁盘时显示 Toast/Message
【发布时间】:2016-11-07 13:52:41
【问题描述】:

我正在使用 picasso 通过用户点击按钮将图像保存到磁盘,我想以 Toast 的形式向用户生成图像已下载的反馈。

为此,我尝试使用以下代码在 UI 线程上运行 toast::

((AppCompatActivity)context).runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
                }
});

哪个没有运行。图像已下载,并且在我的应用程序库中也可见,但 Toast 未显示。有人能告诉我我是否真的做对了,还是应该以其他方式来做?

仅供参考:此代码正在目标对象的 onBitmapLoaded() 方法中运行,我将其传递给毕加索以将图像下载到;这里的 'context' 对象是指当前 Activity 的上下文。

任何帮助将不胜感激:)

【问题讨论】:

    标签: android picasso toast imagedownload


    【解决方案1】:

    在网上做了很多搜索后,我得到了答案。您需要在主线程而不是后台线程上显示 toast。以下代码将完成工作

    Handler handler = new Handler(Looper.getMainLooper());
    
                        handler.post(new Runnable() {
    
                            @Override
                            public void run() {
                                //Display toast here
    
    
                            }
                        });
    

    【讨论】:

      【解决方案2】:

      使用有回调的方法,你可以定义成功和错误的消息。

      final ImageView view = new ImageView(this);
      Picasso.with(this).load("http://i.imgur.com/DvpvklR.png").into(view, new Callback() {
              @Override
              public void onSuccess() {
                  Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
              }
      
              @Override
              public void onError() {
      
              }
          });
      

      编辑:添加占位符的行

      【讨论】:

      • 很抱歉,问题是这个方法只适用于作为目标的 imageView。
      • 如果 图像下载目标 是自定义目标对象,则无法使用自定义回调作为第二个参数,因为我们没有这种方法可用。 :|
      • 我正在使用 imageview 作为临时占位符。
      • 那么你将图像保存到磁盘的逻辑放在哪里?您是从缓存中获取图像并将其保存到磁盘还是单独调用?如果可能的话,想看看你的逻辑。谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2016-06-25
      • 2021-10-13
      • 2014-04-25
      • 2015-05-16
      • 2015-06-13
      • 1970-01-01
      相关资源
      最近更新 更多