Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用改型android时,Dagger2在主要活动中出现问题_Android_Retrofit2_Dagger 2_Dagger - Fatal编程技术网

使用改型android时,Dagger2在主要活动中出现问题

使用改型android时,Dagger2在主要活动中出现问题,android,retrofit2,dagger-2,dagger,Android,Retrofit2,Dagger 2,Dagger,使用dagger2注入改装服务对象时,我面临一个问题。以下是我的场景的详细信息: 改装Web服务类别: public interface WebService { Observable<Name> searchName(@Query("id") String id); } @Module public class SetupModule {

使用dagger2注入改装服务对象时,我面临一个问题。以下是我的场景的详细信息:

改装Web服务类别:

public interface WebService {                                                               
    Observable<Name> searchName(@Query("id") String id);
}
@Module
public class SetupModule {

    @Provides
   MainActivity provideWebService(WebService webService) {
        return new MainActivity(webService);
    }
}
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
    MainActivity inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {
        AppModule.class,
        NetworkModule.class})
public interface AppComponent
{
    SubComponent plus(SubModule subModule);
}
 public SubComponent createSubComponent()
    {
        subComponent = appComponent.plus(new subModule());
        return subComponent;
    }
 public MainActivity(WebService webService) {
        this.webService = webService;
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
下面是子组件类:

public interface WebService {                                                               
    Observable<Name> searchName(@Query("id") String id);
}
@Module
public class SetupModule {

    @Provides
   MainActivity provideWebService(WebService webService) {
        return new MainActivity(webService);
    }
}
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
    MainActivity inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {
        AppModule.class,
        NetworkModule.class})
public interface AppComponent
{
    SubComponent plus(SubModule subModule);
}
 public SubComponent createSubComponent()
    {
        subComponent = appComponent.plus(new subModule());
        return subComponent;
    }
 public MainActivity(WebService webService) {
        this.webService = webService;
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
这里是AppComponent类:

public interface WebService {                                                               
    Observable<Name> searchName(@Query("id") String id);
}
@Module
public class SetupModule {

    @Provides
   MainActivity provideWebService(WebService webService) {
        return new MainActivity(webService);
    }
}
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
    MainActivity inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {
        AppModule.class,
        NetworkModule.class})
public interface AppComponent
{
    SubComponent plus(SubModule subModule);
}
 public SubComponent createSubComponent()
    {
        subComponent = appComponent.plus(new subModule());
        return subComponent;
    }
 public MainActivity(WebService webService) {
        this.webService = webService;
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
下面是BaseApplication类中的组件创建:

public interface WebService {                                                               
    Observable<Name> searchName(@Query("id") String id);
}
@Module
public class SetupModule {

    @Provides
   MainActivity provideWebService(WebService webService) {
        return new MainActivity(webService);
    }
}
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
    MainActivity inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {
        AppModule.class,
        NetworkModule.class})
public interface AppComponent
{
    SubComponent plus(SubModule subModule);
}
 public SubComponent createSubComponent()
    {
        subComponent = appComponent.plus(new subModule());
        return subComponent;
    }
 public MainActivity(WebService webService) {
        this.webService = webService;
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
这是主活动类:

public interface WebService {                                                               
    Observable<Name> searchName(@Query("id") String id);
}
@Module
public class SetupModule {

    @Provides
   MainActivity provideWebService(WebService webService) {
        return new MainActivity(webService);
    }
}
@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
    MainActivity inject(MainActivity mainActivity);
}
@Singleton
@Component(modules = {
        AppModule.class,
        NetworkModule.class})
public interface AppComponent
{
    SubComponent plus(SubModule subModule);
}
 public SubComponent createSubComponent()
    {
        subComponent = appComponent.plus(new subModule());
        return subComponent;
    }
 public MainActivity(WebService webService) {
        this.webService = webService;
    }

@Override
    protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}
在尝试从MainActivity访问webservice接口中的searchName方法时,我收到了
webservice nullpointerexception


请帮我找出为什么webservice对象会变为null?

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

@Inject
WebService webService;

对于android中的活动和片段,构造函数注入是不可能的。你必须在野外注射时给出提示,在这种情况下我该怎么做?参考匕首2的任何指南,这是基本的匕首,看起来很有效。但是为什么我需要从活动构造函数中删除webservice呢。因为我通过子模块活动构造函数提供依赖关系。