如何像这样注入网络模块?

How to inject Network module like this?

我想不出如何注入网络module.I尝试并找到很多方法在匕首中注入网络模块2.But我无法解决this.Please帮助我。

abstract class BaseRepository protected constructor() {
    init {
        val logger = HttpLoggingInterceptor()
        logger.level = HttpLoggingInterceptor.Level.BODY
        val client = OkHttpClient.Builder()
            .connectTimeout(1, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(15, TimeUnit.SECONDS)
            .addInterceptor(logger)
            .build()

        val retrofit = Retrofit.Builder()
            .baseUrl(BuildConfig.BASE_URL)
            .addConverterFactory(GsonConverterFactory.create(Gson()))
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .client(client)
            .build()

        mTheApi = retrofit.create<AttendanceApi>(AttendanceApi::class.java)
    }
}

我试过这个模块,但没用。

class NetworkModule {
    companion object {
        private const val NAME_BASE_URL = "NAME_BASE_URL"
    }

    @Provides
    @Named(NAME_BASE_URL)
    fun provideBaseUrlString()=
        "http://attendance.saltcloudserver.com/api/"

    @Provides
    @Singleton
    fun provideHttpClient()=OkHttpClient()

    @Provides
    @Singleton
    fun provideRetrofit(interceptor: HttpLoggingInterceptor): OkHttpClient {
        return OkHttpClient.Builder()
            .connectTimeout(1, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(15, TimeUnit.SECONDS)
            .addInterceptor(interceptor)
            .build()
    }
}

我期待输出,但我无法注入它。

要使 dagger 识别,您需要指定它是 Module。为此,您需要向 class 添加 @Module 注释,我发现您当前的实现中缺少该注释。

@Module
class NetworkModule {
        companion object {
            private const val NAME_BASE_URL = "NAME_BASE_URL"
        }

        @Provides
        @Named(NAME_BASE_URL)
        fun provideBaseUrlString()=
            "http://attendance.saltcloudserver.com/api/"

        @Provides
        @Singleton
        fun provideHttpClient()=OkHttpClient()

        @Provides
        @Singleton
        fun provideRetrofit(interceptor: HttpLoggingInterceptor): OkHttpClient {
            return OkHttpClient.Builder()
                .connectTimeout(1, TimeUnit.SECONDS)
                .readTimeout(30, TimeUnit.SECONDS)
                .writeTimeout(15, TimeUnit.SECONDS)
                .addInterceptor(interceptor)
                .build()
        }
    }