2013-03-19 10 views
9

Zum Beispiel dieser Code ausführen:Wie nur Code auf bestimmte API-Ebene

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

    } 
); 

} 

gibt Fehler:

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

Ich verstehe, warum ich diesen Fehler kompilieren-Zeit. Aber gibt es eine Möglichkeit, eine Quell-Java-Klasse nur auf bestimmten API-Level-11 zu verwenden? Oder Surround-Code-Blöcke mit einer Definition/ähnlich, so dass der Code nur auf Geräten über API Level-11 spät-gebunden/jitted ist? Was ist die beste Lösung, um das zu erreichen, was ich will? (Das ist eine Aktivität mit Calendar auf Geräte capabile davon zur Verfügung zu stellen.)

+0

Was Sie tun, ist in Ordnung. –

+0

Leider bekomme ich den Fehler beim Kompilieren in Eclipse beschrieben. (Bedeutung Ich kann den Code kompilieren und testen) – Tom

+1

Das ist ein Flusenfehler. Sie können es in den Einstellungen deaktivieren. Ihre App wird weiterhin funktionieren. –

Antwort

15

Ich bin nicht sicher, ob dies Ihr Problem lösen wird,

aber, was Sie verwenden Version zu überprüfen funktioniert nicht unter API 9 (und Sie unterstützen seit API 8).

sollten Sie verwenden:

if (Build.VERSION.SDK_INT > 9) { 

Oder als problematische Funktion API 11 ist, überprüfen Sie für "SDK_INT> 10"

Dann für Flusen Fehler auf Eclipse, tun, wie Menschen kommentieren, Flusen Fehler deaktivieren oder fügen Sie den @SuppressLint („NewAPi“) oder das Ziel dieser Funktion bis 11.

+1

Und Sie können 'Build.VERSION_CODES' Konstanten verwenden, um mit SDK-Version anstelle von Hard-Code zu vergleichen:' if (Build.VERSION.SDK_INT> Build.VERSION_CODES.GINGERBREAD) {} ' –

Verwandte Themen