格式化参数的参数类型错误
Wrong argument type for formatting argument
我使用像 temp_out.setText(response.body().getCurrent().getTemp() + " ℃");
这样的代码从天气中获取数据 API,但是有两个 lint 错误:
Do not concatenate text displayed with set text. Use resource placeholders only.
String literals in setText can not be translated. Use Android resources instead.
所以我在这里搜索了此站点上的类似错误,并在此处找到了部分解决方案 ,
我使用这个是因为我不想使用资源字符串来更改显示的数据。将此添加到 String.xml:
<string name="blank">%d</string>
然后将我的代码更改为:
temp_out.setText(getString(R.string.blank, response.body().getCurrent().getTemp() + " ℃"));
现在我得到这个错误 Wrong argument type for formatting argument '#1' in blank: conversion is 'd', received string (argument #2 in method call)
。
我看到了类似的问题 但他的解决方案对我不起作用。请问如何解决这个问题?
确保 response.body().getCurrent().getTemp()
返回一个 int,如果它是一个字符串,则在字符串 blank
中使用 %s
您可以尝试以下方法之一
<string name="blank">%d Celsius</string>
//invoking as follows
getString(R.string.blank, response.body().getCurrent().getTemp())
temp_out.setText("${response.body().getCurrent().getTemp()} Celsius")
我使用像 temp_out.setText(response.body().getCurrent().getTemp() + " ℃");
这样的代码从天气中获取数据 API,但是有两个 lint 错误:
Do not concatenate text displayed with set text. Use resource placeholders only.
String literals in setText can not be translated. Use Android resources instead.
所以我在这里搜索了此站点上的类似错误,并在此处找到了部分解决方案 <string name="blank">%d</string>
然后将我的代码更改为:
temp_out.setText(getString(R.string.blank, response.body().getCurrent().getTemp() + " ℃"));
现在我得到这个错误 Wrong argument type for formatting argument '#1' in blank: conversion is 'd', received string (argument #2 in method call)
。
我看到了类似的问题
确保 response.body().getCurrent().getTemp()
返回一个 int,如果它是一个字符串,则在字符串 blank
%s
您可以尝试以下方法之一
<string name="blank">%d Celsius</string>
//invoking as follows
getString(R.string.blank, response.body().getCurrent().getTemp())
temp_out.setText("${response.body().getCurrent().getTemp()} Celsius")