2013-03-19 8 views
9

Per esempio, questo codice:Come eseguire solo codice a certo livello di 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();   
     } 

    } 
); 

} 

dà l'errore:

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

capisco perché ottengo questo errore di compilazione. Ma esiste un modo per contrassegnare una classe Java di origine da utilizzare solo su alcuni livelli API 11? Oppure i blocchi del codice surround con un define/similar in modo che il codice sia tardivo/associato solo sui dispositivi sopra il livello API-11? Qual è la migliore soluzione per ottenere ciò che voglio? (Che è quello di fornire un'attività con CalendarView su dispositivi capabile di esso.)

+0

Quello che stai facendo va bene. –

+0

Purtroppo ho ricevuto l'errore descritto durante la compilazione in Eclipse. (Significato Posso compilare e testare il codice) – Tom

+1

Questo è un errore di filaccia. Puoi disabilitarlo nelle preferenze. La tua app funzionerà ancora bene. –

risposta

15

Non sono sicuro se questo sta per risolvere il tuo problema,

ma quello che si utilizza per controllare la versione non funziona sotto API 9 (e stai supportando da API 8).

Si dovrebbe usare:

if (Build.VERSION.SDK_INT > 9) { 

O come problematico funzione API 11, verificare la presenza di "SDK_INT> 10"

Poi per errori di garza su Eclipse, fare come la gente commenta, disattivare gli errori sfilacciata o aggiungi @SuppressLint ("NewAPi") o la destinazione a tale funzione a 11.

+1

E puoi usare le costanti 'Build.VERSION_CODES' per confrontare con la versione di SDK invece di hard-code:' if (Build.VERSION.SDK_INT> Build.VERSION_CODES.GINGERBREAD) {} ' –

Problemi correlati