Как сделать условный invalidateOptionsMenu () вызов в зависимости от уровня API в Android?

Я пытаюсь обновить кнопки меню моего приложения каждый раз, когда один из них нажат; В API 11+ вам нужно вызвать invalidateOptionsMenu() чтобы сделать это; Так как я хочу, чтобы мое приложение совместимо с более низкими API-интерфейсами, как я могу назвать этот метод только при использовании api 11+?

Solutions Collecting From Web of "Как сделать условный invalidateOptionsMenu () вызов в зависимости от уровня API в Android?"

использование

 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+