“onMenuItemSelected”和“onOptionsItemSelected”之间的区别

有人可以解释我之间的区别:

onMenuItemSelected (int featureId, MenuItem item)
http://developer.android.com/reference/android/app/Activity.html#onMenuItemSelected%28int,%20android.view.MenuItem%29

onOptionsItemSelected (MenuItem item)
http://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelected%28android.view.MenuItem%29

在Android? 我发现一个教程是有人重写这两种方法。

 // Reaction to the menu selection @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case R.id.insert: createTodo(); return true; } return super.onMenuItemSelected(featureId, item); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.insert: createTodo(); return true; } return super.onOptionsItemSelected(item); } 

资料来源: http : //www.vogella.de/articles/AndroidSQLite/article.html

Android知道几种types的菜单(例如选项菜单和上下文菜单)。 onMenuItemSelected是通用callback。 你通常不需要使用它。 onOptionsItemSelected是选项菜单的callback, onContextItemSelected是上下文菜单的callback。 改用这两个特定的。

使用ADT 17(版本4.2), onOptionsItemSelectedcallback将允许用户从任何上下文访问菜单选项,包括菜单button和操作栏。 从Android版本3.0开始,首选的方法是可以从onMenuItemSelected访问的Action Bar。 如果您正在devise支持版本2.3或更低版本的应用程序,则您可以使用onOptionsItemSelected

查看代码,onMenuItemSelected可以通过选项菜单(菜单button)点击或通过上下文菜单点击调用。 基本上它只是将点击转发到其他相应的方法。

看看这里的代码: http : //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java#2078