gpt4 book ai didi

android - 必须设置 Dagger ApplicationComponent

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:11 24 4
gpt4 key购买 nike

我需要从 ApplicationModule 公开我的 OkHttpClient,所以我添加到 ApplicationComponent。像这样:

@Module
public class ApplicationModule {

@Provides @Singleton
public OkHttpClient provideOkHttpClient() {
final OkHttpClient.Builder client = new OkHttpClient.Builder();

return client.build();
}



@Singleton
@Component( modules = {ApplicationModule.class} )
public interface ApplicationComponent {

OkHttpClient okHttpClient();

}

所以我在 ApplicationComponent 中添加了 OkHttpClient okHttpClient();,如您在上方所见。

现在在我的 NetworkModule 中,我像这样使用它:

@Module
public class NetworkModule {

@Provides @ActivityScope
public ProjectService provideProjectService(OkHttpClient client) {
return new ProjectService(client);
}


@Component( dependencies = {ApplicationComponent.class}, modules = {NetworkModule.class} )
@ActivityScope
public interface NetworkComponent {

void inject(@NonNull MyActivity myActivity);

}

但是现在当我遇到运行时错误时:

Caused by: java.lang.IllegalStateException: css.test.demo.ApplicationComponent must be set
at css.test.demo.main.projects.network.DaggerNetworkComponent$Builder.build(DaggerNetworkComponent.java:102)
at css.test.demo.main.projects.MyActivity.onCreate(MyActivity.java:159)
at android.app.Activity.performCreate(Activity.java:6237)

这是我在 MyActivity 中构建它的方式:

NetworkComponent = DaggerNetworkComponent.builder()
.NetworkModule(new NetworkModule(this))
.build();

NetworkComponent.inject(this);

最佳答案

我想强调的是,dagger 不包含任何魔法——它只是普通的 java。如果您不给它所需的信息,编译器就会报错。

如果您查看 DaggerNetworkComponent.Builder,您会注意到它有一个名为 appComponent(AppComponent component) 的方法。这是 dagger 希望您添加 NetworkComponent 所依赖的 appcomponent 的地方。

NetworkComponent = DaggerNetworkComponent.builder()
.NetworkModule(new NetworkModule(this))
.appComponent(((App)getApplication()).getAppComponent()) // add your appComponent
.build();

它应该可以工作。

关于android - 必须设置 Dagger ApplicationComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com