【问题标题】:Sending ArrayList of drawables to Service (Java, Android)将可绘制对象的 ArrayList 发送到服务(Java、Android)
【发布时间】:2014-06-10 06:22:51
【问题描述】:

我有一个带有可绘制对象的 ArrayList,现在我想将它们与 Intent 一起发送到我的 Service 类。我该怎么做? 我的数组列表:

ArrayList<Drawable> drawableList = new ArrayList<Drawable>();

我的意图:

Intent service = new Intent(this, MyOwnService.class);
                service.putExtra("Dauer", dauer);
                service.putExtra("Links", false);
                startService(service);

我有可转换为可绘制对象的位图:

        Drawable d = new BitmapDrawable(getResources(),bmp);

如何将这个 ArrayList 放到这个 Intent 中?

【问题讨论】:

  • 有各种各样的drawable。根据您尝试发送的绘图类型,可以应用不同的方法。 (-> 请提供更多细节)
  • 你可以尝试发送drawable的整数引用的ArrayList,比如R.drawable.my_image
  • @njzk2 看看编辑,AT Arman 我在任何文件夹中都没有可绘制对象。可绘制对象是用户从他的图库中选择的任何图片
  • 您的意思是它们是设备存储中的物理文件?
  • @Lars3n95 : the user chooses from his Gallery 在这种情况下,您应该考虑将 Uris 传递给图片,而不是实际的可绘制对象。

标签: java android android-intent arraylist


【解决方案1】:

在 Android 的 Intent 中发送消息的方式是使用 putExtra() 方法。对于 ArrayList,您可以创建一个实现 Parcelable 接口的类。这是一个例子: Arraylist in parcelable object

【讨论】:

  • 但是Drawable“来自Android”我怎么能让它实现Parelable呢?
  • 你可以创建某种继承类,它可以从 Drawable 的实例中构造出来
  • @Lars3n95,有一种方法可以打包这个类:看这个stackoverflow.com/questions/10070974/…。但也许有更好的方法。我认为这一定很耗时..
【解决方案2】:

您可以简单地将文件名传递到列表中,以便意图的接收者自己加载文件(如果可以的话)。这似乎是最简单的解决方案。

另一种方法是创建一个扩展 Drawable 的类,该类可以从它的实例构造并实现 Parcelable 接口(以便您可以使用putExtra() 传递它)

另一种广泛用于解决此问题但看起来很丑陋的解决方案(至少对我而言):您可以将列表存储在静态变量中,以便可以从另一个活动中访问它。

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 2016-05-07
    • 2018-09-24
    • 1970-01-01
    • 2011-09-15
    • 2018-10-27
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多