Could you elaborate further, we've hit exactly the same issue and
can't get around it.

Thanks,
Dan.


On Aug 15, 10:55 am, "Dhanji R. Prasanna" <[email protected]> wrote:
> The easy answer is to simply bind the child injector using a provider.
> Dhanji.
>
> On Sat, Aug 15, 2009 at 10:11 AM, Michael Burton <[email protected]> wrote:
>
> > I have a class that requires an Injector to do some work (it needs to
> > construct some objects on the fly and then injectMembers for them).
>
> > class DoSomething {
> >   �...@inject protected Injector injector;
>
> >    public void doIt() {
> >        ...
> >        injector.injectMembers(stuff);
> >        ...
> >    }
> > }
>
> > In my application, I have two levels of injector.  I have a master
> > injector, created using Guice.createInjector(), and I have a few child
> > injectors, created by calling master.createChildInjector().  I've
> > verified that DoSomething was created using a binding in one of the
> > child injectors.
>
> > The weird thing is that if I inspect DoSomething.injector, I find that
> > it is the MASTER injector, not the CHILD injector.  I would have
> > expected the Injector to be the child injector since it was the child
> > that instantiated DoSomething.
>
> > This seems to be causing me problems like the following:
>
> > E/AndroidRuntime( 1515): com.google.inject.ConfigurationException:
> > Guice configuration errors:
> > E/AndroidRuntime( 1515):
> > E/AndroidRuntime( 1515): 1) A binding to
> > com.google.inject.Provider<android.app.Activity> already exists on a
> > child injector.
> > E/AndroidRuntime( 1515):   while locating
> > com.google.inject.Provider<android.app.Activity>
> > E/AndroidRuntime( 1515):     for field at
> > com.XXX.http.BaseHttpGet.activityProvider(Unknown Source)
> > E/AndroidRuntime( 1515):   while locating com.XXX.model.ImageUtils
> > $GetImage
> > E/AndroidRuntime( 1515):
> > E/AndroidRuntime( 1515): 2) A binding to com.XXX.http.Http already
> > exists on a child injector.
> > E/AndroidRuntime( 1515):   while locating com.XXX.http.Http
> > E/AndroidRuntime( 1515):     for field at com.XXX.http.BaseHttpGet.http
> > (Unknown Source)
> > E/AndroidRuntime( 1515):   while locating com.XXX.model.ImageUtils
> > $GetImage
> > E/AndroidRuntime( 1515):
>
> > My interpretation of that error is that when I call
> > injector.injectMembers(), the master injector attempts to generate a
> > few bindings that it can't find, but errors out because those bindings
> > already exist in the child injector.
>
> > Is there a way I can tell Guice to inject the "correct" Injector
> > instead of always the root injector?  Or alternately, is there a way I
> > can get the correct injector manually somehow?
>
> > Cheers,
> > Mike
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to