我试图将我们当前的系统从匕首1迁移到2,我被困在这里半天.我不认为我很了解这一点.
这是我的模块:
public class BaseModule {
private final Context context;
private final SharedPreferences rawSharedPreferences;
public BaseModule(
Context context,
@Named("RawPreferences") SharedPreferences rawSharedPreferences
) {
this.context = context;
this.rawSharedPreferences = rawSharedPreferences;
}
@Provides
@Singleton
public Context provideContext() {
return context;
}
@Provides
@Singleton
public DevicePlatform provideDevicePlatform(AndroidDevicePlatform devicePlatform) {
return devicePlatform;
}
@Provides
@Named("RawPreferences")
@Singleton
public SharedPreferences provideRawSharedPreferences() {
return rawSharedPreferences;
}
@Provides
@Named("RawPreferencesStore")
@Singleton
public SharedPreferencesStore provideRawSharedPreferencesStore(
@Named("RawPreferences") SharedPreferences sharedPreferences) {
return new AndroidSharedPreferencesStore(sharedPreferences);
}
Run Code Online (Sandbox Code Playgroud)
我的组件:
@Singleton
@Component(
modules = {BaseModule.class}
)
public interface BaseComponent {
void inject (DefaultClientController defaultClientController);
void inject (StatisticsProvider statisticsProvider);
Context provideContext();
AndroidDevicePlatform provideDevicePlatform(AndroidDevicePlatform devicePlatform);
SharedPreferences provideRawSharedPreferences();
SharedPreferencesStore provideRawSharedPreferencesStore(
@Named("RawPreferences") SharedPreferences sharedPreferences);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在provideRawSharedPreferencesStore中不断收到此错误:
错误:(168,28)错误:成员注入方法可能只返回注入的类型或void.
我不明白为什么.有人可以帮帮我吗.谢谢!
Dav*_*jak 16
组件可以包含3种类型的方法:
在某个对象中注入某些东西,这就是你看到的错误.这些方法通常返回void,但是如果你尝试使用类似构建器的东西,则可以返回相同的对象.
MyInjectedObject inject(MyInjectedObject object); // or
void inject(MyInjectedObject object);
Run Code Online (Sandbox Code Playgroud)子组件,您可以将所需的模块作为参数包含(如果需要初始化)
MySubcomponent plus(MyModuleA module);
Run Code Online (Sandbox Code Playgroud)并且基本上只是"getters"或正确调用提供方法来公开对象,手动从组件和子组件中获取它们
MyExposedThing getMything();
Run Code Online (Sandbox Code Playgroud)这是哪一个?
// the line you get your error:
SharedPreferencesStore provideRawSharedPreferencesStore(
@Named("RawPreferences") SharedPreferences sharedPreferences);
Run Code Online (Sandbox Code Playgroud)
您已经提供了SharedPreferencesStore模块.在那里你也声明了它的依赖性RawPreferences: SharedPreferences.您不必在组件中再次执行此操作.
看起来你只是尝试使SharedPreferencesStore访问,如中所述3..如果您只是在相同的范围/组件中依赖它,则可以删除整个组件.如果你需要getter,你应该删除参数.您的模块知道如何创建它.
SharedPreferencesStore provideRawSharedPreferencesStore(); // should work.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |