符号“%”在 android:summary 标记中使用时会导致崩溃

Symbol '%' causes crash when used in android:summary tag

我在 preference.xml 文件中声明了首选项列表:

<ListPreference
        android:key="pref_reflected_calibration"
        android:title="Calibration constant"
        android:summary="Select 18% for DSLR (default), 12.5% for Sekonics"
        android:entries="@array/reflected_calibration_entries"
        android:entryValues="@array/reflected_calibration_values"
        android:defaultValue="18"/>

它导致崩溃并出现错误:"java.util.IllegalFormatConversionException: %f can't format java.lang.String arguments"

当我从 android:summary 标签中删除 '%' 符号时,它工作正常。 将“%”符号替换为等效的 unicode 符号无济于事。 在文档中找不到解释,所以在这里问这个问题

在 Java 中,% 符号通常在格式说明符之前,这可能是导致错误的原因。用另一个 % 转义 % 符号应该可以解决问题:

android:summary="Select 18%% for DSLR (default), 12.5%% for Sekonics"