我正在探索 RoboGuice 的世界,并将地图活动更改为现在可以使用它。它是一个 RoboMapActivity,我已将应用程序的扩展更改为从 RoboActivity 继承。我已经成功使用@InjectView 如下..
public class MyMappingActivity extends RoboMapActivity {
@InjectView(R.id.mapview) MapView mMapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView injects all of the @values listed above
setContentView(R.layout.main);
DgApplication.data.setmPathProfile(this);
List<Overlay> mapOverlays = mMapView.getOverlays();
//etc...
}
//etc...
}
现在,我创建了一个 ItemizedOverlay,这就是我卡住的地方。我已经添加了
@Inject MyItemizedOverlay mMyItemizedOverlay;
在 MyMappingActivity 中,MyItemizedOverlay 的摘录如下:
class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
@Inject
public MyItemizedOverlay(Drawable marker) {
super(boundCenterBottom(marker));
}
}
我的问题是我必须为 ItemizedOverlay 父级提供一个默认标记,该标记位于构造函数中。我无法使用 @InjectResource 来做到这一点,因为构造函数中似乎不支持依赖注入,并且我已经研究了在模块中使用 bind().to() ,但这似乎是针对接口而不是数据类型。
我觉得我应该在执行@Inject 的 MyMappingActivity 中将参数定义为 MyItemizedOverlay ,因为如果不使用new MyItemizedOverlay()传递它们,我就无法从构造函数内部引用 android 资源。
我的问题是双重的:
首先,我是否走在正确的轨道上?其次,如何解决 MyItemizedOverlay 的构造函数的问题?