I think you've mixed up nullable with optional. You probably want
this:
@Inject(optional=true) @Named("sharedPreferencesContext") protected
String context;
http://code.google.com/p/google-guice/wiki/Injections
http://code.google.com/p/google-guice/wiki/UseNullable
On Nov 20, 6:13 pm, Michael Burton <[email protected]> wrote:
> I'm injection a constant String into a provider to configure some
> info, but I don't want the constant to be required. Thus I'd like to
> make it @Nullable so that I can use a sensible default if one isn't
> provided.
>
> public class SharedPreferencesProvider implements
> Provider<SharedPreferences> {
> protected static final String DEFAULT = "default";
>
> @Inject @Nullable @Named("sharedPreferencesContext") protected
> String context;
> @Inject protected Provider<Context> contextProvider;
>
> public SharedPreferences get() {
> return contextProvider.get().getSharedPreferences(context!
> =null ? context : DEFAULT, Context.MODE_PRIVATE);
> }
>
> }
>
> Seems pretty straightforward, but I keep running into the following
> exception:
>
> E/AndroidRuntime( 803): com.google.inject.CreationException: Guice
> creation errors:
> E/AndroidRuntime( 803):
> E/AndroidRuntime( 803): 1) No implementation for java.lang.String
> annotated with @com.google.inject.name.Named
> (value=sharedPreferencesContext) was bound.
> E/AndroidRuntime( 803): while locating java.lang.String annotated
> with @com.google.inject.name.Named(value=sharedPreferencesContext)
> E/AndroidRuntime( 803): for field at
> roboguice.inject.SharedPreferencesProvider.context(Unknown Source)
> E/AndroidRuntime( 803): at roboguice.config.AndroidModule.configure
> (AndroidModule.java:52)
> E/AndroidRuntime( 803):
> E/AndroidRuntime( 803): 1 error
> E/AndroidRuntime( 803): at
> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist
> (Errors.java:354)
> E/AndroidRuntime( 803): at
> com.google.inject.InjectorBuilder.initializeStatically
> (InjectorBuilder.java:152)
> E/AndroidRuntime( 803): at com.google.inject.InjectorBuilder.build
> (InjectorBuilder.java:105)
> E/AndroidRuntime( 803): at com.google.inject.Guice.createInjector
> (Guice.java:92)
> ...
>
> Am I missing something?
>
> 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=.