2011-12-04 7 views
0

これまでAPI 14用にビルドされています。私は今準備をしようとしているので、API 7をダウンロードして指定しました。 API14で使用していたいくつかのAPIがAPI7で使用できないため、いくつかのコンパイルエラーがあります。条件付きで異なるターゲット用にビルド

私はそれらを条件文にどのように入れることができるのだろうかと思います。

if (API_14) 
{ 
    if (mTextEdit.isEmpty()) { 
     // Do Something 
    } 
} else if (API_7){ 
    if (mTextEdit.matches("")) { 
     // Do the same thing 
    } 
} 

これはコンパイル時の条件スイッチでなければなりません。そうしなければ、私のコードはコンパイルされなくなるからです。

以前はJavaでプリプロセッサがサポートされていないと聞いたことがあるので、私が複数のバージョンをターゲットとしているソースをどのように管理するのがよいかについての提案を歓迎します。

編集: 私も私の状態リストの描画可能とトラブルに実行しています:もちろん

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:state_pressed="true" 
     android:drawable="@android:color/holo_orange_dark" /> 

    <item android:drawable="@android:color/transparent" /> 

</selector> 

を、hold_orange_darkはAPI7では使用できません。私もそれらを管理することができるようにしたいと思います。

答えて

0

。したがって、Value-v14ディレクトリを作成して、そのAPIバージョンとValuesディレクトリのいずれかを使用するリソースのコピーを作成し、Valueがデフォルトで使用され、Value-v14がデバイスがバージョン14の場合にのみ使用されます。

プログラムでそれを行うために、あなたはSO-

try { 
     //Insert ICS stuff here 
    } catch(NoSuchMethodError e){ 
    } 

などのtry-catchを試みることができるとして、あなたはthis-

public static boolean isHoneycomb() { 
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; 
} 
を試みることができます