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.