在SDK版本切换中调用新Android API的方法

时间:2012-10-08 20:46:33

标签: android

最新的Android API提供了一些旧版Android无法使用的有用方法。例如,DatePicker有一个名为setCalendarViewShown()的新方法,该方法不适用于旧的API,如Android 2.2(8级)等。

但是,我已将最低API级别设置为8,将目标级别设置为16.因此,如果可用,我希望使用这些方法(在11级以上设备上)。

现在我尝试以编程方式区分几个API级别,如果可用的话,调用这样的方法:

if (android.os.Build.VERSION.SDK_INT >= 11) {
    datePicker.setCalendarViewShown(false);
}

这种方法可以吗?在Eclipse中,只有一些警告,但它们当然可以被抑制。由于检查SDK_INT,此代码应该没问题,不应该造成任何问题,不应该吗?

1 个答案:

答案 0 :(得分:2)

  

这种方法可以吗?

为了便于阅读,我使用Build.VERSION_CODES.HONEYCOMB代替11,否则就是。

  

在Eclipse中,只有一些警告,但它们当然可以被抑制。

Eclipse将指出API级别8中不存在setCalendarViewShown()。它没有可靠的方法来确认您只是在版本保护块中调用该方法,所以它只是抱怨。使用TargetApi(11)注释将摆脱它,同时仍然确保如果你向需要高于11的东西的方法添加 else ,你将再次收到警告。

  

由于检查了SDK_INT,这段代码应该没问题,不应该有问题,不应该吗?

BTW,在这种特殊情况下,您可以使用(android:calendarViewShown)替换呼叫的XML属性。由于旧版本会自动忽略XML属性,因此您可以跳过Build检查。