Ответ 1
Использование
ActivityCompat.invalidateOptionsMenu(Activity activity)
Я пытаюсь обновлять кнопки меню моего приложения каждый раз, когда нажимается одна из них; в API 11+ для этого необходимо вызвать invalidateOptionsMenu()
; так как я хочу, чтобы мое приложение совместимо с более низкими API-интерфейсами, как я могу назвать этот метод только при использовании api 11 +?
Использование
ActivityCompat.invalidateOptionsMenu(Activity activity)
Для других, которые ищут ответ, как я:
Если вы используете 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 +