如果我到目前为止,MenuInflater是一种可以膨胀(炸毁,扩展?)菜单类型对象的对象.但是何时调用该方法以及哪个Menu对象自动传入?getMenuInflater()做什么(或者它只是... =新的MenuInflater()的另一种方式)?然后,一旦创建了inflater对象,.inflate究竟做了什么?传入的菜单对象对我的main.xml菜单有什么作用?
(如果我一次提出太多问题,我很抱歉.)
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(Menu);
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ues 11
A MenuInflater是能够Menu从xml资源(当然只有菜单资源)创建的对象,即:构造Menu给定菜单资源标识符的新实例.
将onCreateOptionMenu(Menu)当按下设备的菜单按钮被调用时,或任一Activity.openOptionsMenu()被调用.
菜单的实际呈现由活动处理.在它显示之前,Activity将菜单传递给您,以便您可以使用自己的项目填充它,然后显示它.
所以Android承诺,因为渲染菜单不是你的业务,你不应该控制实际传递给你的菜单onCreateOptionsMenu.
至于ActionBar,onCreateOptionsMenu填充时调用ActionBar,以便菜单中的选项可用ActionBar.此方法仅Activity在创建后调用一次.如果您想稍后修改菜单,则应改为覆盖Activity.onPrepareOptionsMenu
我对“膨胀”的理解是“读取”资源文件(描述布局或 GUI 元素的 XML 文件)并“创建”与其对应的实际对象;这将使菜单对象在 Android 应用程序中可见。 MenuInflater类代表一个 Android 框架类,专门用于从菜单资源文件解析和构建菜单。
看一看:使用 Java 和 XML 在 Android 中构建菜单:介绍
从文章:
一旦菜单资源文件 (my_menu.xml) 准备好并包含您要添加的所有项目,您就可以使用 MenuInflater 来覆盖 onCreateOptionsMenu 函数。此函数应该用所需的菜单项填充菜单对象,但 Android 的 MenuInflater 类可帮助您从上述 XML 资源创建菜单项
| 归档时间: |
|
| 查看次数: |
13981 次 |
| 最近记录: |