2011-12-04 34 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

对于你的资源,你可以为不同平台的版本specify different directories。因此,您应该让Values-v14目录拥有使用该API版本和Values目录中任何内容的任何资源的副本,以便默认使用值,并且只有在设备版本为14时才会使用Values-v14。

至于编程这样做,你可以尝试一个try-catch像所谓

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

或者你可以尝试这个 -

public static boolean isHoneycomb() { 
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; 
} 
相关问题