格式化字符串res时,gradle plugin lint错误

时间:2018-04-06 12:16:34

标签: android android-gradle lint

我在下面有一个字符串res和kotlin数据类:

<string name="amount_format">¥%1$.2f</string>

data class TagAndTotal(
    @ColumnInfo(name = "tag_name") var tagName: String,
    @ColumnInfo(name = "total") var total: Float)

升级到AGP 3.1.0后运行./gradlew lint时出现错误。

Error: Wrong argument type for formatting argument '#1' in 
amount_format: conversion is 'f', received <ErrorType> (argument #2 in 
method call) [StringFormatMatches]
        applicationContext.getString(R.string.amount_format, it.total))

但AGP 3.0.1中没有错误。

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。使用类型解决我的问题声明一个显式局部变量。

在你的情况下,你可以尝试:

val total : Double = it.total
applicationContext.getString(R.string.amount_format, total)

我认为这是AGP中的一个错误

答案 1 :(得分:0)

您需要为符号使用转义字符 例如:

$ for $ %为%

在您的资源文件中这样。

Check this link.

答案 2 :(得分:0)

这是AGP中的错误-https://issuetracker.google.com/issues/169751286

它已在4.1.0-alpha08中修复。

撰写本文时,最“稳定”的版本是4.1.0-rc03。