0

当您创建一个按钮时,您可以分配一个侦听器来捕获用户操作,例如点击。

 button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           //do some stuff
        }
    });

}

我的问题是为什么菜单项不需要监听器?我只需要写 getMenuInflater().inflate(R.menu.main, menu);

代替

public boolean onCreateOptionsMenu(Menu menu).

并使用

public boolean onOptionsItemSelected(MenuItem item)

定义单击项目时的行为。我没有看到任何 setListener 方法。此外,主活动类没有实现任何监听器。菜单项如何工作?

4

1 回答 1

1

菜单项如何工作?

OptionsMenuAndroid中的内置小部件也是如此OS

它的工作原理很简单,就像您单击一个项目然后立即调用"OnItemSelectedListener"它(您不需要实现它,只要您单击该项目就会自动调用它)。此侦听器已实现。你不必实施它,我认为你不应该也不能。

onOptionsItemSelected当您单击项目时,侦听器会调用一个方法。


以及文档到底说了什么:

This hook is called whenever an item in your options menu is selected. 默认实现简单地返回 false 以进行正常处理(调用项目的 Runnable 或根据需要向其 Handler 发送消息)。您可以将此方法用于您希望在没有其他设施的情况下对其进行处理的任何项目。

派生类应调用基类以执行默认菜单处理。

于 2013-06-19T23:04:03.160 回答