Как сделать условный вызов invalidateOptionsMenu() в зависимости от уровня API в Android?
Я пытаюсь обновлять кнопки меню моего приложения при каждом нажатии одной из них; в API 11+ нужно позвонить invalidateOptionsMenu()
сделать это; так как я хочу, чтобы мое приложение было совместимо с более низкими API, как мне вызывать этот метод только при использовании API 11+?
6 ответов
Для тех, кто ищет ответ, как я был:
Если вы используете ActionBarSherlock и пытаетесь обновить кнопки панели действий в API <11 вместо
Activity.invalidateOptionsMenu()
ты можешь использовать
SherlockActivity.supportInvalidateOptionsMenu()
:
Если вы расширяете ActionBarActivity в своем классе, тогда вам просто нужно это:
supportInvalidateOptionsMenu();
Я не думаю, что есть необходимость в библиотеке совместимости и так далее, просто сделайте простой
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
invalidateOptionsMenu();
}
Вам не нужно вызывать его перед сотой, так как afaik, onPrepareOptionsMenu() вызывается при нажатии кнопки меню. Меня устраивает.
Вы пытались использовать FragmentActivity из пакета поддержки вместо обычной активности? Я полагаю, что FramentActivity будет иметь метод, который вам нужен.
Я думаю, что у меня есть это... ответ был создать новый класс:
public class wrapThree {
public void invalidate(myActivity act) {
act.invalidateOptionsMenu();
}
}
а затем вызвать этот метод из myActivity, если API 11+
По крайней мере, это не дает ошибок в API < 11... все равно придется тестировать его в API 11+