【发布时间】:2016-10-20 23:21:20
【问题描述】:
Android Studio 2.2.2
我有一个 NewsListModelImp 类,它是 MVP 中的模型。
我想将我的改造服务注入到模型中。但是,由于NewsListModelImp 不包含对上下文或活动的任何引用,我不能调用getApplication()。如果你在一个活动或片段中,你会做什么。我不想在NewsListModeImp 的构造函数中传递任何上下文或活动,因为那必须来自演示者,我想避免那里有任何 android 的东西。
public class NewsListModelImp implements NewsListModelContract {
@Inject
NYTimesSearchService mNYTimesSearchService;
public NewsListModelImp() {
((NYTimesSearchApplication)getApplication()).getAppComponent().inject(this);
}
}
我的应用类
public class NYTimesSearchApplication extends Application {
private AppComponent mAppComponent;
public void onCreate() {
super.onCreate();
/* Setup dependency injection */
createAppComponent();
}
private void createAppComponent() {
mAppComponent = DaggerAppComponent
.builder()
.retrofitModule(new RetrofitModule())
.build();
}
public AppComponent getAppComponent() {
return mAppComponent;
}
}
我的提供模块
@Module
public class RetrofitModule {
private Retrofit retrofit() {
return new Retrofit
.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
@Provides
@Singleton
public NYTimesSearchService providesNYTimesSearch() {
return retrofit().create(NYTimesSearchService.class);
}
}
我的应用组件
@Singleton
@Component(modules = {RetrofitModule.class})
public interface AppComponent {
void inject(NewsListModelImp target);
}
非常感谢您的任何建议,
【问题讨论】:
标签: android dependency-injection dagger-2