为什么单独使用menu.findItem()而不是findViewByID?

时间:2017-08-04 11:27:23

标签: java android

我是Android的新手并且对这两行代码的区别有疑问,但首先假设我有一个menu.xml文件,其中包含两个项目,ID为"保存& #34;以及ID为#34的删除项目;删除"

MenuItem menuSave = (MenuItem) findViewById(R.id.save);

以上这条线对我来说不起作用,但是这条线工作了:

MenuItem menuSave = menu.findItem(R.id.save);

这两者有什么区别?为什么第一行给我错误并且不能工作?

2 个答案:

答案 0 :(得分:1)

不同之处在于第二行是指菜单找到它的项目,第一行是在活动布局中查找视图

第一行的文档:https://developer.android.com/reference/android/app/Activity.html#findViewById(int)

第二行的文件: https://developer.android.com/reference/android/view/Menu.html#findItem(int)

答案 1 :(得分:1)

findItem(R.id.save):     MenuItem menuSave = menu.findItem(R.id.save);,因为您可以控制<item>资源的<menu>元素。所以menu.findItem(R.id.save); 并返回带有特定标识符的菜单项。

findViewById(R.id.save)  查找具有给定ID的第一个后代视图,如果ID与getId()匹配则视图本身;如果ID无效(&lt; 0)或者层次结构中没有匹配的视图,则查找null。