格式字符串 XXX 不是有效的格式字符串,因此不应将其传递给 String.format

2022-08-31 23:53:47

我有Android应用程序和这个字符串在资源:

<string name="create_group_select_people">Select up to %1$d people!</string>

这是从片段调用的:

Integer countMax = 5; //also tried just "int" - nothing changed
getResources().getString(R.string.create_group_select_people, countMax);

但我得到了错误:

Format string 'create_group_select_people' is not a valid format string so it should not be passed to String.format

我不明白出了什么问题?当我启动应用程序时 - 它字面上显示“最多选择%1 $ d的人!


答案 1

我只是复制了代码,它运行良好。所以你可能需要检查一些其他地方,这是我的建议。

  1. 清洁项目
  2. 检查多语言文件
  3. 或者只是像其他人说的那样使用String.format

答案 2

在资源中将格式设置为 true 的参数:

<string name="some_text" formatted="true">
    Use for String.format method. Parameter one: %s1
</string>

并以这种方式使用:

String.format(context.getString(R.string.some_text,"value 1"))

或者这样:

context.getString(R.string.some_text,"value 1"))

注意:格式化标志应仅对带占位符的字符串设置为 true