android - 在 ICS 首选项中转义 % - 我真的必须编写特定于版本的字符串处理吗?

标签 android string escaping preferences

我有一个在 ICS 上崩溃的应用程序。到那时为止工作正常(虽然我不确定我是否真的有一个蜂窝平台可以测试,我们所有的测试手机都是 Gingerbread 或更低的,现在我有几个 ICS 手机可以玩)。

我的首选项页面中的以下代码(从 onResume 和 OnPreferenceChangeListener 调用)运行良好:

protected void setBatteryAlarmSummary(String newValue){
    Preference batteryAlarm = (Preference) findPreference( getString(R.string.battery_low_alarm) );
    StringBuilder summary = new StringBuilder();
    summary.append(getString(R.string.battery_alarm_summary_label));
    summary.append(" ");
    summary.append(newValue);
    summary.append("%");
    batteryAlarm.setSummary(summary);
}

这会将 pref summary 设置为“低电量警报 10%”。现在,有了 ICS,它就崩溃了。不是在它执行 setSummary 时,也不是在页面显示时,而是当您稍微滚动首选项时,显然会触发渲染(这个项目大约有 8 个左右的项目,所以它在列表中的“折叠下方” ).修复 ICS 很容易,只需转义百分号即可:

summary.append("%%");

但是, Gingerbread 上的代码显示“电量不足 10%% 时发出警报”

我可以编写它以根据版本进行更改,但这很愚蠢。他们是否真的破坏了他们偏好渲染的向后兼容性,或者这只是三星的事情(不幸的是,这是我目前唯一的 ICS 测试平台)?

最佳答案

你可以试试百分号的 Unicode 等价物,比如:

summary.append("\u0025");

这应该有效。

关于android - 在 ICS 首选项中转义 % - 我真的必须编写特定于版本的字符串处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494940/

相关文章:

android - 使用AudioTrack在Android中播放WAV文件:声音嘈杂

java - 方法总是返回空列表

JavaScript - 使用 indexOf() 在字符串中搜索字符

c - 为什么没有不可变的整数集而不可变的字符集是可能的?

escaping - 在Blazor中转义@

bash - 快速转义任何字符串

android - 在 retrofit 和 rxjava 完成后调用一个函数

android - 无法从图库上传图片

java - 分割以逗号分隔的字符串并将值存储到 int 数组中

php - 在 JavaScript 或 PHP 中转义撇号