java - 如何在接口(interface)中使用 getResources.getString(R.string)?

标签 java android

我有一个带有静态 key 的接口(interface)。我想从一个字符串文件中检索这个键,但是如果我只放 R.string.key,它会显示不兼容的类型,因为它检索整数值,如果我放 R.string.key + "",它就变成了一个字符串,但获取String文件id,最好使用getResources.getString(R.string.key),但是没办法在Interface中使用getResources.getString方法。

工作:

public interface NotificacaoService {
    @Headers({"34853485734",
            "Content-Type:application/json"}) @POST("send")
    Call<NotificacaoDados> salvarNotificacao(@Body NotificacaoDados notificacaoDados);
}

我想这样离开:

public interface NotificacaoService {
    @Headers({getResources.getString(R.string.key),
            "Content-Type:application/json"}) @POST("send")
    Call<NotificacaoDados> salvarNotificacao(@Body NotificacaoDados notificacaoDados);
}

最佳答案

对不起,您想要的是不可能的。注解参数需要是常量。

一种解决方案是从字符串资源切换到 BuildConfig。在您的 Gradle 脚本中使用 buildConfigField 来定义您的 key (buildConfigField "String", "API_KEY", "\"34853485734\"")。然后,您可以在您的界面中引用生成的常量(例如,BuildConfig.API_KEY`)。

或者,如果此接口(interface)用于 Retrofit,您可以通过 OkHttp 拦截器添加 header ,而不是通过 @Headers 注释。

关于java - 如何在接口(interface)中使用 getResources.getString(R.string)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57761886/

相关文章:

java - 作为 Gradle Java 项目的一部分在本地运行 Dynamodb

java - 我的扫描仪不断收到错误 "cannot find symbol"

java - 单击按钮时 setRequestedOrientation 后自动旋转不起作用

java - 为什么我们在从 java 包中导入类时使用 *?

android - 使用 Glide 库显示模糊图像

android - 致命信号 11 (SIGSEGV),代码 1,故障地址 0x48 in tid 21741 (RenderThread) in android in rear case in some device

android - Android 中的星形按钮

java - 如何在jtable中添加表头和滚动条。 java

java - 使用 Java 中的 Obj-C 类,有办法吗?

java - 编译器错误 : com. sun.tools.javac.code.Symbol$CompletionFailure : class file for rx. 未找到 Observable