Android 如何从资源中设置改型URL字符串
我已经重构了用Kotlin编写的代码的某些部分,并且倾向于将url放在strings.xml中,但是当我想在改造的注释部分中指向strings.xml文件中的字符串时,我得到了以下错误 注释参数必须是编译时常量 这是我的密码:Android 如何从资源中设置改型URL字符串,android,kotlin,retrofit2,Android,Kotlin,Retrofit2,我已经重构了用Kotlin编写的代码的某些部分,并且倾向于将url放在strings.xml中,但是当我想在改造的注释部分中指向strings.xml文件中的字符串时,我得到了以下错误 注释参数必须是编译时常量 这是我的密码: interface SampleApiService { @GET(Resources.getSystem().getString(R.string.sample_url)) fun getSamples(){ } } 谁能告诉我怎么了 在下面的
interface SampleApiService {
@GET(Resources.getSystem().getString(R.string.sample_url))
fun getSamples(){
}
}
谁能告诉我怎么了
在下面的帖子中找到了答案。如文档所述,它在构建时编译您的应用程序资源。注释处理在编译时进行。因此,您无法将资源字符串传递给注释 Android SDK工具将应用程序的资源编译到 构建时的应用程序二进制文件
根据所提供的示例,创建静态字符串变量并将其传递到注释中-也可以使用静态URL。为了不使用任何运行时值并能够在运行时更改它,需要对其进行类似的注释:
@GET("{path}")
fun getSamples(@Path("path") path: String) {}
然后可以在运行时从字符串资源中加载任何字符串路径。当需要更改基本URL时,可能需要重新配置客户端。这是因为注释处理器正在使用这个接口
定义从中生成抽象层——已经在编译时,而不是在运行时。。。当从字面上理解投诉时,它必须如下所示:
@GET(Constants.SOME_PATH)
fun getSamples() {}
但仅仅对字符串进行硬编码并没有什么进步,因为它以后无法更改。问题解决了,
Tnx至
我不得不使用另一个改装注释标记
新:@Url参数注释允许传递端点的完整Url
结果如下:
interface SampleApiService {
@GET
fun getSamples(
@Url url: String =
Resources.getSystem().getString(R.string.sample_url)
)
: Deferred<ArrayList<Sample>>
}
接口采样服务{
@得到
有趣的样品(
@Url:String=
Resources.getSystem().getString(R.string.sample\u url)
)
:延期
}
解决方案的可能副本:@Miha_x64 tnx给你,这解决了我的问题。