Wie binde ich an einen Provider, der einen Annotation-Wert in Guice verwendet?
Gibt es eine Möglichkeit, sich an einen Anbieter zu binden, der den Annotationswert des Ziels in Google Guice interpretiert?
Beispiel:
bind(Resource.class)
.annotatedWith(MyAnnotation.class)
.toProvider(new MyProvider<MyAnnotation, Resource>{
public Resource get(MyAnnotation anno){
return resolveResourceByAnnoValue(anno.value());
}
});
Ich möchte das Feld einer Android-Aktivitätsklasse durch kommentierte Bindung initialisieren. Aufgrund der eindeutigen ID sollte es mehrere Ressourcen in Anspruch nehmen müssen.
Ursprüngliche Weise:
public class TestActivity extends Activity{
private TextView textView;
private Button testButton;
public void onAfterCreate(...){
// set UI declaration resource.
setContentView(R.layout.activity_test);
// initialize fields, it must be done after setting ui definition.
textView = (TextView) findViewById(R.id.textView);
.... initialize other fields, hook them...
...
}
Ich möchte die Benutzeroberfläche und ihr Feld deklarativ binden, nicht pragmatisch wie oben:
@ResourceID(R.layout.activity_test)
public class TestActivity extends InjectiveActivity{
@ResourceID(R.id.textView) // Auto generated static resource id constant
private TextView textView;
@ResourceID(R.id.testButton)
private Button testButton;
...
}