2016-11-12 2 views
10

Я использую invalidateOptionsMenu() метод для обработки изменения панели инструментов MenuItems, но в последнее время что-нибудь вкусненькое, это выделить этот метод как ERROR и говорит:Android, этот API помечен как внутренний в библиотеку поддержки и не должны быть доступны из приложений ошибки

This API is marked as internal to the support library and should not be accessed from apps

navigationview.setNavigationItemSelectedListener(XXX); Также для метода и некоторые другие! Для решения этой проблемы очень нелогично использовать @SuppressWarnings("RestrictedApi"), так как вы просто игнорируете lint, но не , решаете проблему.

как я могу исправить эту проблему?

ответ

4

Если вы используете библиотеку поддержки и AppCompatActivity, вы должны позвонить supportInvalidateOptionsMenu.

+0

Да, но их много, например: 'navigationView.getMenu();' , что метод 'getMenu()' имеет ту же ошибку – AlirezaXX

+0

Это не было частью исходного вопроса и связано с разным классом (AppCompatActivity vs NavigationView). Но чтобы ответить на это: Google, похоже, аннотировал многие методы в Support Library 25.0.1 с RestrictedApi (см. Http://tools.android.com/tips/lint-checks). Вы можете игнорировать это с помощью @SuppressWarnings («RestrictedApi»), но иногда (как и в исходном вопросе) есть лучший способ - не использовать ограниченные методы и называть те, которые Google создал для этой цели. – rastik

+0

Вы можете разместить свой код с помощью getMenu в качестве отдельного вопроса (пожалуйста, оставьте здесь комментарий со ссылкой), и, возможно, есть способ решить эту проблему. – rastik

Смежные вопросы