Cómo ejecutar código sólo en cierto nivel de API

Por ejemplo, este código:

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

Da error:

Descripción Ruta de recursos Tipo de ubicación La llamada requiere el nivel 11 de la API (el min actual es 8): android.widget.CalendarView # setOnDateChangeListener example.java / example / src / com / ejemplo /

Entiendo por qué recibo este error de compilación. ¿Pero hay alguna manera de marcar una clase Java de origen para que solo se use en cierto API nivel-11? ¿O rodean los bloques del código con un define / similar así que el código es limitado tarde / jitted solamente en los dispositivos sobre API nivel-11? ¿Cuál es la mejor solución para lograr lo que quiero? (Que es proporcionar una actividad con CalendarView en los dispositivos capabile de la misma.)

No estoy seguro si esto va a resolver su problema,

Pero lo que está utilizando para comprobar la versión no funciona bajo la API 9 (y está soportando desde la API 8).

Deberías usar:

 if (Build.VERSION.SDK_INT > 9) { 

O como función problemática es la API 11, compruebe "SDK_INT> 10"

A continuación, para errores de pelusa en eclipse, haga como comentario de personas, desactive errores de pelusa o agregue el @SuppressLint ("NewAPI") o el destino a esa función a 11.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.