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

时间:2011-08-14 20:38:15

标签: android

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

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

3 个答案:

答案 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。 基本上它只是将点击转发给其他相应的方法。

请查看此处的代码:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java#2078