Я изучаю мир RoboGuice и изменил действие карт, чтобы теперь работать с ним. Это RoboMapActivity, и я изменил свое расширение Application для наследования от 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 () в модуле, но, похоже, это касается интерфейсов, а не данных. типы.
Мне кажется, что я должен определить параметр для MyItemizedOverlay в MyMappingActivity, где я выполняю @Inject, поскольку я не могу ссылаться на ресурсы Android внутри конструктора, не передавая их с помощью new MyItemizedOverlay ( ) .
У меня двоякие вопросы:
Во-первых, я иду по правильному пути?
Во-вторых, как мне решить проблему с конструктором для MyItemizedOverlay?