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 用に私が持っている唯一のテスト プラットフォームです)。