2

4.0 を対象とするプロジェクトがあるとしますが、2.2 までのバージョンをサポートしているとします。2.2 デバイスで以下を実行すると、正しい値である 14 が得られます。

Integer version = Build.VERSION_CODES.ICE_CREAM_SANDWICH

デバイスが 2.2 API を使用しており、2.2 Build.VERSION_CODESクラスによると、int ICE_CREAM_SANDWHICH = 14定数について言及されていないため、null 値またはエラーが予想されます。ここで何が欠けていますか?

4

2 に答える 2

1

Ahmad が言うように、定数「ICE_CREAM_SANDWICH」を使用するには、コードを API レベル 14 でコンパイルする必要があります。問題は、コンパイル時にこれらの定数がそれぞれの値に変更されることです。つまり、実行時にどのデバイスも「ICE_CREAM_SANDWICH」定数ではなく値 14 を認識します (Froyo 2.2 がインストールされたデバイスであっても)。

言い換えれば、あなたのコードでは:

Integer version = Build.VERSION_CODES.ICE_CREAM_SANDWICH;

デバイスで:

Integer version = 14;

正確にはそうではありませんが、アイデアはわかります。

于 2012-10-06T05:09:53.917 に答える
1

コメントですでに回答しましたが、回答として書き留めることもできると思います。

Build.VERSION_CODE が提供する値は、プロジェクトをコンパイルした API レベルに依存するため、API レベル 10 でコンパイルした場合、Build.VERSION_CODES.ICE_CREAM_SANDWICH を呼び出しても値は返されませんが、コンパイルするとAPI レベル 14 では、正しい値が得られます。

そのため、呼び出しようとしているビルド番号よりもコンパイル レベルが低い場合は、null が返されます。

于 2012-10-06T01:01:54.677 に答える