有人可以解释我之间的区别:
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
?我找到了一个教程,有人重写了这两种方法。
// 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
答案 0 :(得分:52)
Android知道几种类型的菜单(例如选项菜单和上下文菜单)。 onMenuItemSelected
是通用回调。您通常不需要使用它。 onOptionsItemSelected
是选项菜单的回调,onContextItemSelected
是上下文菜单的回调。改为使用这两个特定的。
答案 1 :(得分:10)
使用ADT 17(版本4.2),onOptionsItemSelected
回调将允许用户从任何上下文(包括菜单按钮和操作栏)访问菜单选项。从Android 3.0版开始,首选方法是Action Bar,可以从onMenuItemSelected
访问。如果您正在设计支持版本2.3或早于onOptionsItemSelected
的应用程序,那就是您想要的方式。
答案 2 :(得分:3)
查看代码,可以通过选项菜单(菜单按钮)单击或通过上下文菜单单击调用onMenuItemSelected。 基本上它只是将点击转发给其他相应的方法。