我已经看到很多网站的最佳答案,这确实清楚我对getMenuInflater()的疑问,但找不到任何。请告诉我,选项菜单中getMenuInflater()的一般用途是什么?
你用它来获得MenuInflater
。 MenuInflater
可以“膨胀”菜单资源,将XML表示转换为Menu
和MenuItem
对象的树。反过来,这些对象用于填充操作栏和Toolbar
小部件之类的东西。
此类用于将菜单XML文件实例化为Menu对象。
出于性能原因,菜单通胀严重依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时使用带有XmlPullParser的MenuInflater而不是纯XML文件;它只适用于从编译资源返回的XmlPullParser(R. something文件。)
MenuInflater:doc link
此类用于将菜单XML文件实例化为Menu对象。
出于性能原因,菜单通胀严重依赖于在构建时完成的XML文件的预处理。因此,目前无法在运行时使用带有XmlPullParser的MenuInflater而不是纯XML文件;它只适用于从编译资源返回的XmlPullParser(R. something文件。)
简单的第一行意思是你可以使用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)
}
结果: