Экранирование % в настройках ICS -Мне действительно нужно писать обработку строк для конкретной версии?

У меня есть приложение, которое вылетает на ICS. До этого все работало нормально (, хотя я не уверен, что у меня когда-либо была сотовая платформа для тестирования, все наши тестовые телефоны были либо имбирными пряниками, либо ниже, и теперь у меня есть пара телефонов 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);
}

Это устанавливает предварительную сводку на «Сигнализация низкого заряда батареи на 10%». Теперь с ICS он вылетает. Не тогда, когда он делает setSummary и не когда страница отображается, а когда вы даже немного прокручиваете настройки, очевидно запуская рендеринг (этот элемент находится примерно на 8 или около того элементов ниже, поэтому он находится «ниже сгиба» на список ). Исправить ICS легко, просто избегайте знака процента:

summary.append("%%");

Однако этот код на имбирном прянике отображает «Сигнал о низком заряде батареи при 10%%»

. Я могу написать, чтобы он менялся в зависимости от версии, но это просто глупо. Действительно ли они нарушили обратную совместимость при рендеринге своих настроек, или это просто фишка Samsung (, которая, к сожалению, сейчас является единственной тестовой платформой для ICS, которая у меня есть )?

6
задан Evert 24 July 2012 в 14:37
поделиться