到目前为止,我一直在为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中不支持预处理器,所以我欢迎有关如何最好地管理我的源代码的建议,我将针对多个版本。
修改 我的状态列表drawable也遇到了麻烦:
<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>
当然,API7中没有hold_orange_dark。我也希望能够管理这些。
答案 0 :(得分:0)
你不能做ifs,否则你会在旧设备上崩溃。
您必须使用Java Reflection有条件地使用来自更新API的方法。
示例:http://mobile.tutsplus.com/tutorials/android/java-reflection/
答案 1 :(得分:0)
对于您的资源,您可以specify different directories了解不同的平台版本。因此,您需要创建一个Values-v14目录,以获取使用该API版本和Values目录中任何内容的任何资源的副本,以便默认情况下使用Values,并且只有在设备版本为14时才使用Values-v14。
至于以编程方式进行,您可以尝试像so-
这样的Try-Catchtry {
//Insert ICS stuff here
} catch(NoSuchMethodError e){
}
或者你可以试试这个 -
public static boolean isHoneycomb() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
}