使用dagger2注入改造服务对象时,我遇到了一个问题。这是我的情况的详细信息:
改造WebService类:
public interface WebService {
Observable<Name> searchName(@Query("id") String id);
}
这是SubModule类:
@Module
public class SetupModule {
@Provides
MainActivity provideWebService(WebService webService) {
return new MainActivity(webService);
}
}
这是SubComponent类:
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
MainActivity inject(MainActivity mainActivity);
}
这是AppComponent类:
@Singleton
@Component(modules = {
AppModule.class,
NetworkModule.class})
public interface AppComponent
{
SubComponent plus(SubModule subModule);
}
这是BaseApplication类中的组件创建:
public SubComponent createSubComponent()
{
subComponent = appComponent.plus(new subModule());
return subComponent;
}
这是MainActivity类:
public MainActivity(WebService webService) {
this.webService = webService;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
尝试从MainActivity访问WebService界面中的searchName方法时,我得到了webservice nullpointerexception
。
请帮助我找出为什么Web服务对象为空?
答案 0 :(得分:1)
我认为,首先您应该从活动构造函数中删除WebService,然后启动类似这样的服务:
@Inject
WebService webService;