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

例如,这个代码:

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(); } } ); } 

给出错误:

说明资源path位置types调用需要API级别11(当前最小为8):android.widget.CalendarView#setOnDateChangeListener example.java / example / src / com / example / example line 20 Android Lint Problem

我明白为什么我得到这个错误编译时。 但有什么办法可以标记一个源Java类只能用于某些API级别11? 或者定义/相似的环绕代码块,所以代码只能在API level-11之上的设备上延迟/跳转? 什么是最好的解决scheme来实现我想要的? (这是提供一个活动与设备能力的CalendarView)。

Related of "如何只在特定的API级别上执行代码"

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

但是你用来检查版本的东西不能在API 9下工作(而且你从API 8开始支持)。

你应该使用:

 if (Build.VERSION.SDK_INT > 9) { 

或者由于API11有问题,检查“SDK_INT> 10”

然后在eclipse上发现lint错误,像别人一样评论,禁用lint错误或者将@SuppressLint(“NewAPi”)或者目标添加到那个函数中。