【问题标题】:An annotation argument must be a compile-time constant注释参数必须是编译时常量
【发布时间】:2021-06-11 19:41:24
【问题描述】:

这就是我想要做的事情

@FormUrlEncoded
@POST("retrofit/POST/signup.php")
abstract fun signUp(
    @Field(Constant().KEY_NAME) name: String?,
    @Field(Constant().KEY_CELL) cell: String?,
    @Field(Constant().KEY_PASSWORD) password: String?,
): Call<Contacts?>?

我在Constant().KEY_NAMEConstant().KEY_CELLConstant().KEY_PASSWORD 上遇到错误

错误:注解参数必须是编译时常量

常量类。

class Constant {
  val BASE_URL = "http://istiak.ga/app/"

  val KEY_NAME = "name"
  val KEY_PASSWORD = "password"
  val KEY_CELL = "cell"
}

【问题讨论】:

    标签: android kotlin retrofit


    【解决方案1】:

    您需要做的是将您的Constants 类转换为object,如下所示

    object Constants {
     const val BASE_URL = "http://istiak.ga/app/"
    
     const val KEY_NAME = "name"
     const val KEY_PASSWORD = "password"
     const val KEY_CELL = "cell"
    }
    

    然后您可以直接引用每个值,而不是为您需要的每个变量创建Constants 类的实例,如下所示

    @FormUrlEncoded
    @POST("retrofit/POST/signup.php")
    abstract fun signUp(
        @Field(Constant.KEY_NAME) name: String?,
        @Field(Constant.KEY_CELL) cell: String?,
        @Field(Constant.KEY_PASSWORD) password: String?,
    ): Call<Contacts?>?
    

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多