【发布时间】:2017-08-11 11:30:41
【问题描述】:
- 我正在使用 https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2 ...并遵循所有步骤
- 我能够同步应用程序并查看 Dagger 依赖项
我面临的问题:
//DaggerNetComponent is not getting generated
mNetComponent = DaggerNetComponent.builder()
.appModule(new AppModule(this))
.netModule(new NetModule("https://api.github.com"))
.build();
网络模块
import android.app.Application;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
@Module
public class NetModule {
String mBaseUrl;
public NetModule(String mBaseUrl) {
this.mBaseUrl = mBaseUrl;
}
@Provides
@Singleton
Cache provideHttpCache(Application application) {
int cacheSize = 10 * 1024 * 1024;
Cache cache = new Cache(application.getCacheDir(), cacheSize);
return cache;
}
@Provides
@Singleton
Gson provideGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
return gsonBuilder.create();
}
@Provides
@Singleton
OkHttpClient provideOkhttpClient(Cache cache) {
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.cache(cache);
return client.build();
}
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient okHttpClient) {
return new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(mBaseUrl)
.client(okHttpClient)
.build();
}
}
应用模块
import android.app.Application;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public class AppModule {
Application mApplication;
public AppModule(Application mApplication) {
this.mApplication = mApplication;
}
@Provides
@Singleton
Application provideApplication() {
return mApplication;
}
}
网络组件
import javax.inject.Singleton;
import dagger.Component;
import retrofit.modules.AppModule;
import retrofit.modules.NetModule;
@Singleton
@Component(modules = {AppModule.class, NetModule.class})
public interface NetComponent {
void inject(MainActivity activity);
}
如何调试这个以便我能够生成这个类
【问题讨论】:
-
你能把 NetComponent 代码连同 AppModule 和 NetModule 一起粘贴到这里吗?
-
@AlexanderBilchuk ...我已添加代码
-
您是否尝试重建您的项目?并注意到任何构建错误?
-
没有构建错误...我重新构建了代码