Какова цель использования getMenuInflater () в целом в Android Stiudio? - PullRequest
0 голосов
/ 03 сентября 2018

Я видел много сайтов за лучший ответ, который действительно прояснил мои сомнения по поводу getMenuInflater (), но не смог найти ни одного. Пожалуйста, дайте мне знать, что является основным назначением getMenuInflater () в меню параметров?

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Этот класс используется для создания экземпляров XML-файлов меню в объектах Menu.

По соображениям производительности раздувание меню в значительной степени зависит от предварительной обработки файлов XML, которая выполняется во время сборки. Поэтому в настоящее время невозможно использовать MenuInflater с XmlPullParser поверх простого XML-файла во время выполнения; он работает только с XmlPullParser, возвращенным из скомпилированного ресурса (файл R. что-то).

0 голосов
/ 03 сентября 2018

MenuInflater: ссылка на документ

Этот класс используется для создания экземпляров XML-файлов меню в объектах Menu.

По соображениям производительности, инфляция меню сильно зависит от предварительная обработка файлов XML, которая выполняется во время сборки. Следовательно, это в настоящее время невозможно использовать MenuInflater с XmlPullParser поверх простого XML-файла во время выполнения; это работает только с XmlPullParser возвращается из скомпилированного ресурса (R. что-то из файла.)

Что означает первая строка в простых словах, так это то, что вы можете динамически добавлять / раздувать Меню, используя файлы XML.

ПРИМЕР раздувания контекстного меню:

style.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/cut"
        android:title="Cut"
        app:showAsAction="always" />
    <item android:id="@+id/copy"
        android:title="Copy"
        app:showAsAction="always" />
    <item android:id="@+id/paste"
        android:title="Paste"
        app:showAsAction="always" />
</menu>

Код деятельности (Kotlin):

override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenu.ContextMenuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo)
        val menuInflater = this.activity!!.menuInflater
        menuInflater.inflate(R.menu.style, menu)
    }

Результат:

Context menu result

0 голосов
/ 03 сентября 2018

Вы используете его, чтобы получить MenuInflater. MenuInflater может «раздувать» ресурсы меню, преобразовывая представление XML в дерево объектов Menu и MenuItem. В свою очередь, эти объекты используются для заполнения таких вещей, как панель действий и Toolbar виджеты.

...