android - 如何只在特定的 API 级别上执行代码

标签 android

例如,这段代码:

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) {

  myCalendarView.setOnDateChangeListener(
    new OnDateChangeListener() {

      @Override
      public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
        Toast.makeText
        (
          getApplicationContext(), ""+dayOfMonth, 0
        ).show();        
      }

    }
  );

}  

给出错误:

Description Resource Path Location Type Call requires API level 11 (current min is 8): android.widget.CalendarView#setOnDateChangeListener example.java /example/src/com/example/example line 20 Android Lint Problem

我明白为什么会在编译时出现此错误。但是有没有办法将源 Java 类标记为仅在某些 API 级别 11 上使用?或者用 define/similar 包围代码块,以便代码仅在 API 级别 11 以上的设备上进行后期绑定(bind)/jitted?实现我想要的最佳解决方案是什么? (即在具有此功能的设备上使用 CalendarView 提供 Activity 。)

最佳答案

我不确定这是否能解决您的问题,

但是您用来检查版本的内容在 API 9 下不起作用 (并且您从 API 8 开始支持)。

你应该使用:

if (Build.VERSION.SDK_INT > 9) { 

或者有问题的函数是 API 11,检查“SDK_INT>10”

然后对于 eclipse 上的 lint 错误,按照人们的评论进行操作,禁用 lint 错误或将 @SuppressLint("NewAPI") 或该函数的目标添加到 11。

关于android - 如何只在特定的 API 级别上执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502935/

相关文章:

android - 我应该使用服务而不是后台 Activity 吗?

android - 在 ListView 之后滑动 Activity

android - 如何使用 libs-for-android 库?

Android:创建 PDF 文件并将其下载到下载目录

android - 为什么我的首选项页面不显示当前值?

java - 检查编辑文本中的空值

android - 通过 Volley 调用 https Api 时遇到错误

android - 如何将 View 绑定(bind)与包含的 View 一起使用?

android - 在android中向选定的联系人发送短信

android - 如何使用 kotlin 通过 TCP 连接发送和接收字符串