我看到许多网站都提供了最佳答案,这确实消除了我对getMenuInflater()的怀疑,但找不到任何答案。 请让我知道,选项菜单中的getMenuInflater()的一般用途是什么?
答案 0 :(得分:0)
您使用它来获取MenuInflater
。 MenuInflater
可以“填充”菜单资源,将XML表示形式转换为Menu
和MenuItem
对象的树。反过来,这些对象用于填充操作栏和Toolbar
小部件之类的东西。
答案 1 :(得分:0)
该类用于将菜单XML文件实例化为Menu对象。
出于性能原因,菜单填充在很大程度上依赖于在构建时进行的XML文件的预处理。因此,当前无法在运行时通过纯XML文件在XmlPullParser中使用MenuInflater。它仅适用于从已编译资源(R. something文件)返回的XmlPullParser。
答案 2 :(得分:0)
MenuInflater:doc link
该类用于将菜单XML文件实例化为Menu对象。
出于性能方面的考虑,菜单膨胀严重依赖于 在构建时对XML文件进行预处理。因此,它 当前无法将MenuInflater与XmlPullParser一起使用 在运行时通过纯XML文件;它仅适用于XmlPullParser 从已编译资源(R.some文件)返回。
第一行的意思是,您可以使用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>
活动代码(科特琳):
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)
}
结果: