我想可能有几种方法可以做到这一点。这完全取决于您想如何处理它。
一种方法是使用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 定义一个绑定。老实说,我不确定这是否值得麻烦,但这绝对是可行的。