使用翻新android时主活动中的Dagger2注入问题

时间:2018-07-26 12:08:13

标签: android retrofit2 dagger-2 dagger

使用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服务对象为空?

1 个答案:

答案 0 :(得分:1)

我认为,首先您应该从活动构造函数中删除WebService,然后启动类似这样的服务:

@Inject
WebService webService;
相关问题