-1

每当我尝试运行应用程序时,我都会遇到此错误:

error: [Dagger/MissingBinding] api.PrayerTimesInterface cannot be provided without an @Provides-annotated method.

这是界面:

    @GET("calendar")
suspend fun getPrayerTimes(
    @Query("latitude") latitude: Double,
    @Query("longitude") longitude: Double,
    @Query("method") method: Int,
    @Query("month") month: Int,
    @Query("year") year: Int,
): Response<PlayerTime>

@GET("calendarByAddress")
suspend fun getPrayerAddress(
    @Query("address") address: String,
    @Query("method") method: Int,
    @Query("month") month: Int,
    @Query("year") year: Int,
): Response<PlayerTime>
}

我试图添加“@Provides”,但仍然面临同样的错误。相同的代码在不同版本的应用程序中可用,并且运行良好。

我在这里尝试了解决方案: 如何修复 dagger2 库中的“如果没有 @Provides-annotated 方法就无法提供”错误

但这对我不起作用

我在这里做错了吗?

4

1 回答 1

2

接口类不能直接注入,因为它们没有构造函数。我想你正在使用PrayerTimesInterfacewith RetrofitPrayerTimesInterface所以用Retrofit'create方法注入。

module课堂上

@Provides
internal fun providesPrayerTimes(): PrayerTimesInterface {
        return Retrofit.Builder().build().create(PrayerTimesInterface::class.java)
    }

您还可以使用所需的所有选项创建 Retrofit 注入,并将其providesPrayerTimes用于创建方法PrayerTimesInterface

于 2021-06-04T06:32:54.190 回答