"onMenuItemSelected"和"onOptionsItemSelected"之间的区别

jim*_*jim 39 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);
}
Run Code Online (Sandbox Code Playgroud)

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

Har*_*elm 52

Android知道几种类型的菜单(例如选项菜单和上下文菜单).onMenuItemSelected是通用回调.您通常不需要使用它.onOptionsItemSelected是选项菜单onContextItemSelected的回调,是上下文菜单的回调.请改用这两个特定的.


rhi*_*te1 10

使用ADT 17(版本4.2),onOptionsItemSelected回调将允许用户从任何上下文访问菜单选项,包括菜单按钮和操作栏.从Android 3.0版开始,首选方法是可以从中访问的Action Bar onMenuItemSelected.如果您正在设计一个支持2.3或更早版本的应用程序,那onOptionsItemSelected就是您想要的方式.