Ошибки компиляции в ActionBarSherlock с использованием api 4.4.2

#android #actionbarsherlock

#Android #actionbarsherlock

Вопрос:

У меня есть этот код в ActionBarSherlock

 @Override
public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) 
{
    if (super.onRequestSendAccessibilityEvent(child, event)) {
        // Add a record for ourselves as well.
        AccessibilityEvent record = AccessibilityEvent.obtain();
        onInitializeAccessibilityEvent(record);
        // Populate with the text of the requesting child.
        child.dispatchPopulateAccessibilityEvent(record);
        event.appendRecord(record);
        return true;
    }
    return false;
}

@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(info);
    info.setScrollable(isScrollableForAccessibility());
    View selectedView = getSelectedView();
    if (selectedView != null) {
        info.setEnabled(selectedView.isEnabled());
    }
}

@Override
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
    super.onInitializeAccessibilityEvent(event);
    event.setScrollable(isScrollableForAccessibility());
    View selectedView = getSelectedView();
    if (selectedView != null) {
        event.setEnabled(selectedView.isEnabled());
    }
    event.setCurrentItemIndex(getSelectedItemPosition());
    event.setFromIndex(getFirstVisiblePosition());
    event.setToIndex(getLastVisiblePosition());
    event.setItemCount(getCount());
}
  

И я получаю ошибки компиляции в super.onInitializeAccessibilityEvent(событие); и несколько других методов.

Кто-нибудь знает, почему это происходит?

Спасибо!

Комментарии:

1. И ошибки есть… что именно?

2. Ошибка заключается в том, что для вызовов требуется уровень api 14, и я установил его на 8. Но это сбивает с толку, потому что я явно установил мое значение 4.4.2

Ответ №1:

Жалоба заключается в том, что для вашего android:minSdkVersion значения установлено значение 8, и этот код ссылается на классы, методы или поля, которые не были добавлены до уровня API 14.

Если вы пытаетесь изменить ActionBarSherlock и скомпилировать его самостоятельно, вы можете либо добавить соответствующий код для решения этой проблемы (проверка Build.VERSION.SDK_INT ), либо добавить @TargetApi() аннотацию, чтобы остановить жалобы Lint.

Комментарии:

1. Спасибо. Что произойдет, если я использую ActionBarSherlock и оставлю свой minSdk на 8? Произойдет ли сбой приложения у пользователей с Android версии 8 на своих устройствах?

2. @Genadinik: Ну, пока этого не произошло. Все это обратные вызовы, которые, вероятно, просто не вызываются в более старых версиях Android и, следовательно, безопасны. Однако Lint не отличает эти случаи ни от чего другого, поэтому Lint визжит.