格式化参数的参数类型错误

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")