Как выполнить код только на определенном уровне 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();        
      }

    }
  );

}  

выдает ошибку:

описание путь к ресурсу тип местоположения вызов требует уровня API 11 (текущая минута - 8): андроид.штучка.CalendarView#setOnDateChangeListener пример.Ява /пример/ГРЦ/ком/пример/пример 20 Проблема С Корпией Android

Я понимаю, почему я получаю эту ошибку времени компиляции. Но есть ли способ отметить исходный класс Java, который будет использоваться только на определенных Уровень API-11? Или блоки объемного кода с define / similar, поэтому код поздно привязан / jitted только на устройствах выше уровня API-11? Какое решение лучше всего для достижения того, чего я хочу? (Который должен предоставить действие с CalendarView на устройствах capabile этого.)

1 ответов


Я не уверен, что это решит вашу проблему,

но то, что вы используете для проверки версии, не работает под API 9 (и вы поддерживаете с API 8).

вы должны использовать:

if (Build.VERSION.SDK_INT > 9) { 

или как проблемная функция API 11, проверьте "SDK_INT>10"

затем для ошибок lint в eclipse сделайте, как люди комментируют, отключите ошибки lint или добавьте @SuppressLint("NewAPi") или цель к этой функции в 11.