3

最新的 Android API 有一些有用的方法,这些方法不适用于旧的 Android 版本。例如DatePicker, 有一个新方法setCalendarViewShown(),它不适用于 Android 2.2(8 级)等旧 API。

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

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

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

这种方法好吗?在 Eclipse 中,只有一些警告,但它们当然可以被抑制。由于检查了SDK_INT,这段代码应该没问题并且不会引起任何问题,不是吗?

4

1 回答 1

2

这种方法好吗?

我会使用Build.VERSION_CODES.HONEYCOMB而不是11为了可读性,否则是的。

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

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

由于检查了 SDK_INT,这段代码应该没问题,不会引起任何问题,不是吗?

是的。

顺便说一句,在这种特殊情况下,您可以使用 XML 属性 ( android:calendarViewShown) 来替换调用。由于旧版本会自动忽略 XML 属性,因此您可以跳过Build检查。

于 2012-10-08T21:13:53.793 回答