我正在使用Roboguice。
如何注入BitmapDescriptor?
通常没有Roboguice我做:
BitmapDescriptor file;
BitmapDescriptor resource;
file = BitmapDescriptorFactory.fromFile(new File...)
resource = BitmapDescriptorFactory.fromResource(R.drawable...)
有没有办法注入这些值?
答案 0 :(得分:0)
我想可能有几种方法可以做到这一点。这一切都取决于你想要如何接近它。
一种方法是使用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定义绑定。老实说,我不确定这是否值得这么麻烦,但这绝对可行。