3

のような一部の 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 のドキュメントは、setRoundingModecopySign、およびその他が API レベル 9 で追加されたことを確認しています。これは、Android OS レベル 8 以下を実行しているデバイスが、特に JDK 1.5 でコンパイル/ビルドされていることを意味しますか?

そして、私はそれを理解することができます。しかし、Android サポート ライブラリ (またはその他のもの) でこれらのメソッドの使用を許可することは不可能ですか?

Android の 10 進数形式での 2 分の 1 の切り上げに関連

4

0 に答える 0