İşte konudur@Named sağlayıcılar vererek java.lang.IllegalArgumentException sona:
çoğaltın ben farklı platformlar için farklı modüllere sahip bir LibGDX proje üzerinde çalışıyorum.
@Module(
includes = {BaseModule.class, NetModule.class},
injects = {DummyProjectDesktop.class, DummyProject.class},
overrides = true)
public class DummyProjectDesktopModule {
kuyu dinlenme hemen hemen aynıdır: gibi masaüstü modülü nasıl göründüğünü burada
@Module(
includes = {BaseModule.class, NetModule.class},
injects = {DummyProjectActivity.class, DummyProject.class},
overrides = true)
public class DummyProjectAndroidModule {
...
@Provides @Singleton @Named("DummyOne")
DummyInterface provideDummyOne() {
return new DummyOne();
}
@Provides @Singleton @Named("DummyTwo")
DummyInterface provideDummyTwo() {
return new DummyTwo();
}
@Provides @Singleton @Named("DummyConsumer")
DummyConsumer provideDummyConsumer(@Named("DummyOne") DummyInterface dummyOne,
@Named("DummyTwo") DummyInterface dummyTwo) {
return new DummyConsumer(dummyOne, dummyTwo);
}
}
.. ve: my android modülü nasıl göründüğünü
budur. Yine de masaüstü için bir proje oluştururken her şey Android tarafında nerede güzel ve dandy gider, ben hala beni flabbergasted bırakır bu hata olsun. Şimdi
Process: net.alicanhasirci.mobile.DummyProject.android, PID: 4603
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.alicanhasirci.mobile.DummyProject.android/net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity}: java.lang.IllegalArgumentException: Duplicate:
net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne()
net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
at android.app.ActivityThread.access$800(ActivityThread.java:148)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5272)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
Caused by: java.lang.IllegalArgumentException: Duplicate:
net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyOne()
net.alicanhasirci.mobile.android.image.DummyInterface net.alicanhasirci.mobile.DummyProject.android.DummyProjectAndroidModule.provideDummyTwo()
at dagger.internal.UniqueMap.put(UniqueMap.java:29)
at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.handleBindings(ReflectiveModuleAdapter.java:104)
at dagger.internal.plugins.reflect.ReflectiveModuleAdapter.getBindings(ReflectiveModuleAdapter.java:89)
at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:174)
at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:132)
at dagger.ObjectGraph.create(ObjectGraph.java:129)
at net.alicanhasirci.mobile.DummyProject.android.DummyProjectActivity.onCreate(DummyProjectActivity.java:137)
at android.app.Activity.performCreate(Activity.java:5977)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258)
hançer kaynak koduna hızlı bir bakış ve ben bu eleme ek açıklamaları yansıma yoluyla toplanmıştır ve daha sonra UniqueMap anahtar olarak kullanılacak isimler bağlanma için önekleri olarak alışmak görebilirsiniz. Benim sorunum İşte
biraz daha ilave vardır ... benim eleme nasılsa işlenmiş almaz, henüz benim masaüstü inşa sorunsuz çalışan bu alanın çevresinde bir yerde meydana geldiği görülmektedir:ObjectGraph objectGraph = ObjectGraph.create(new DummyProjectAndroidModule());
objectGraph.inject(this);
dp = objectGraph.get(DummyProject.class);
i almak nasıl DummyConsumer
alan enjeksiyonu olan DummyProject
nesnesinde. Bu itibarla:
@Inject @Named("DummyConsumer") DummyConsumer consumer;
Ben geçici bir çözüm olarak beton sınıflarına dönüş türleri değişti ama hepimiz onlar sonuna kadar yalnız bırakmaz biliyorum çünkü kimse geçici bir çözüm sevmez.
Lütfen daha güncel bir Hançer sürümüne geçin. –