Подтвердить что ты не робот

Разница между "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

4b9b3361

Ответ 1

Android знает о нескольких типах меню (например, меню опций и контекстное меню). onMenuItemSelected - это общий обратный вызов. Вам не нужно использовать это обычно. onOptionsItemSelected является обратным вызовом меню опций, а onContextItemSelected является обратным вызовом контекстного меню. Вместо этого используйте эти два конкретных.

Ответ 2

Используя ADT 17 (версия 4.2), обратный вызов onOptionsItemSelected позволит пользователю получить доступ к опциям меню из любого контекста, включая кнопку меню и панель действий. Начиная с версии 3.0 для Android предпочтительным методом является панель действий, к которой можно получить доступ из onMenuItemSelected. Если вы разрабатываете приложение, поддерживающее версии 2.3 или ранее, чем onOptionsItemSelected, вы хотите пойти.

Ответ 3

Если посмотреть на код, onMenuItemSelected можно вызвать с помощью меню параметров (кнопка меню) или нажмите контекстное меню. В основном это просто переводит клики на другие соответствующие методы.

Посмотрите на код здесь: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java#2078