のような一部の Java ライブラリ メソッドDecimalFormat.setRoundingMode
は@since 1.6
、ドキュメントにエントリがあります。
/**
...
* @since 1.6
*/
public void setRoundingMode(RoundingMode roundingMode) {
...
}
Android 4.2.2 および JDK 1.6 でコンパイルされたこのメソッドをandroid:minSdkVersion
、示されているように 7 に設定して使用しようとすると、
myNumberFormat.setRoundingMode(RoundingMode.DOWN);
Android Lint は私のために赤で下線を引いsetRoundingMode
て、それを教えてくれました
Call requires API level 9 (current min is 7): java.text.NumberFormat#setRoundingMode
Android API は、使用できる Java ライブラリ メソッドと使用できない Java ライブラリ メソッドを制限する方法と理由を教えてください。プロジェクトをクリーンアップすると、Lint エラーが消えました。私のプロジェクトはエラーなしでコンパイルされ、Android 2.2.3 (API 8) を実行しているデバイスで実行されました。
私のプログラムは次のようにクラッシュしました:
05-09 11:32:38.436: E/AndroidRuntime(2074): Caused by: java.lang.NoSuchMethodError: java.text.NumberFormat.setRoundingMode
Android のドキュメントは、setRoundingMode、copySign、およびその他が API レベル 9 で追加されたことを確認しています。これは、Android OS レベル 8 以下を実行しているデバイスが、特に JDK 1.5 でコンパイル/ビルドされていることを意味しますか?
そして、私はそれを理解することができます。しかし、Android サポート ライブラリ (またはその他のもの) でこれらのメソッドの使用を許可することは不可能ですか?