ActionBarSherlock дает тонны "Call требует, чтобы уровень API уровня 11 (текущий мин равен 7)"
Я загрузил ActionBarSherlock 4.0.3, распаковал его и создал новый проект из папки library
. Папка src
была, по мнению Eclipse, полна ошибок, поэтому я следил за различными инструкциями в Интернете, например добавив android-support-v4.jar
, установив целевой API на 15 и уровень соответствия компилятора 1.6. Тем не менее, проект имеет 194 ошибки, все из которых "Call требует уровня API 11 (текущий минимум 7)". Поэтому, когда я смотрю на одну из ошибок, я вижу следующее:
@Override
public void invalidateOptionsMenu() {
getSherlock().dispatchInvalidateOptionsMenu();
}
public void supportInvalidateOptionsMenu() {
invalidateOptionsMenu();
//the previous line has this error in Eclipse:
//Call requires API level 11 (current min is 7): android.app.Activity#invalidateOptionsMenu
}
Мне это кажется странным, потому что invalidateOptionsMenu()
переопределяется предыдущей функцией, но Eclipse все еще жалуется на функцию, требующую нового уровня API. Когда я смотрю на другие ошибки, я нахожу, что это имеет место и со многими другими ошибками.
У меня гораздо больше опыта работы с Python, чем с Java, поэтому я ничего не понимаю о том, почему это происходит. Помощь будет оценена, и если вы поможете, не могли бы вы также объяснить, что вызывает это и что вы сделали, чтобы решить эту проблему? Я бы не хотел спрашивать кого-то каждый раз, когда у меня есть проблема, я тоже хочу учиться.
Ответы
Ответ 1
Поскольку вы используете минимальный API-уровень 7, а invalidateOptionsMenu() не существовало до уровня API 11, вы не можете его переопределить без ошибок, поскольку, если устройство запускает уровень API 7, функция не доступна даже в базовом классе, а не существующая функция не может быть переопределена.
Ответ 2
Случилось мне после запуска чеков Lint. Попробуйте щелкнуть правой кнопкой мыши на проекте панели инструментов sherlock → Инструменты Android → Очистить маркеры Lint.
Ответ 3
Используйте ActivityCompat, предоставленный в банке поддержки.
Ответ 4
Все ответы неверны, кроме dbrown0708 Ответ, но я объявлю это более
Вы можете использовать invalidateOptionMenu в нижнем API, используя ActivityCompat Как это предусмотрено в библиотеке поддержки v4
Синтаксис invalidateOptionsMenu(Activity activity);
code
ActivityCompat.invalidateOptionsMenu(this);
В API Начиная с уровня 11
invalidateOptionsMenu();
Ответ 5
Попробуйте использовать import android.support.v4.app.Fragment; как свою библиотеку