【问题标题】:How to inject into a BitmapDescriptor如何注入 BitmapDescriptor
【发布时间】:2014-07-23 07:43:47
【问题描述】:

我正在使用 Roboguice。

如何注入 BitmapDescriptor?

我通常不使用 Roboguice:

BitmapDescriptor file;
BitmapDescriptor resource;

file = BitmapDescriptorFactory.fromFile(new File...)
resource  = BitmapDescriptorFactory.fromResource(R.drawable...)

有没有办法注入这些值?

【问题讨论】:

    标签: android roboguice


    【解决方案1】:

    我想可能有几种方法可以做到这一点。这完全取决于您想如何处理它。

    一种方法是使用Named 绑定。假设您可以使用 R.drawable.bitmap_x 引用的 BitmapX。

    bind(BitmapDescriptor.class).annotatedWith(Names.named("BitmapX")).toProvider(new Provider<BitmapDescriptor>() {
                @Override
                public BitmapDescriptor get() {
                    return BitmapDescriptorFactory.fromResource(R.drawable.bitmap_x);
                }
            }).
    

    然后你可以在你的代码中使用它。

    @Inject
    @Named("BitmapX")
    private BitmapDescriptor bitmapX
    

    或者这个

    @Inject
    public SomeConstructor(@Named(BitmapX) BitmapDescriptor bitmapX) {
    }
    

    您还可以为要注入的每个位图创建自己的注释。您必须为要加载的每个不同的 BitmapDescriptor 创建一个注释。

    @Target({ METHOD, CONSTRUCTOR, FIELD, PARAMETER })
    @Retention(RUNTIME)
    @BindingAnnotation
    public @interface BitmapX {
    }
    

    然后你会像这样在你的模块中定义

    bind(BitmapDescriptor.class).annotatedWith(BitmapX.class).toProvider(new Provider<BitmapDescriptor>() {
                @Override
                public BitmapDescriptor get() {
                    return BitmapDescriptorFactory.fromResource(R.drawable.bitmap_x);
                }
            }).
    

    那么你现在可以再次使用它了。

    @Inject
    @BitmapX
    private BitmapDescriptor bitmapX
    

    @Inject
    public SomeConstructor(@BitmapX BitmapDescriptor bitmapX) {
    }
    

    在这两种情况下,您都必须为要注入的每个 BitmapDescriptor 定义一个绑定。老实说,我不确定这是否值得麻烦,但这绝对是可行的。

    【讨论】:

      猜你喜欢
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 2017-05-21
      相关资源
      最近更新 更多