【发布时间】:2018-03-09 20:56:37
【问题描述】:
我有应用程序级范围的单例类 TaskRepository 和 AppConfig,它们具有单例类型的依赖关系。在我的活动中,TaskRepository 的实例被注入,但它的所有字段都是空的。
应用类
public class MVPApplication extends Application implements HasActivityInjector {
@Inject
DispatchingAndroidInjector<Activity> activityDispatchingAndroidInjector;
@Inject
TasksRepository tasksRepository;
@Inject
AppConfig appConfig;
private static MVPApplication instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
Realm.init(this);
DaggerAppComponent
.builder()
.application(this)
.realmBuilder(Realm.getDefaultInstance())
.build()
.inject(this);
}
@Override
public DispatchingAndroidInjector<Activity> activityInjector() {
return activityDispatchingAndroidInjector;
}
}
应用组件
@Singleton
@Component(modules = {
AndroidInjectionModule.class,
AppModule.class,
ActivityBindingModule.class})
public interface AppComponent extends AndroidInjector<DaggerApplication> {
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
@BindsInstance
Builder realmBuilder(Realm realm);
AppComponent build();
}
void inject(MVPApplication application);
TasksRepository getRepository();
AppConfig getAppConfig();
}
应用模块
@Singleton
@Module
public class AppModule {
@Provides
@Singleton
TasksRepository provideTasksRepository() {
return new TasksRepository();
}
@Provides
@Singleton
AppConfig provideAppConfig() {
return new AppConfig();
}
}
TaskRepository 类
@Singleton
public class TasksRepository implements RepositoryDatasource {
@Inject
Context mContext;
@Inject
AppConfig appConfig; //Singleton
@Inject
Realm realm; //Singleton
//There is no constructor. Only public functions using fields
}
AppConfig 类
@Singleton
public class AppConfig {
@Inject
Context mContext;
//There is no constructor. Only public functions using fields
}
请突出我的错误...任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: android dependency-injection singleton dagger-2 dagger