Разница между "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
3 ответов:
Android знает о нескольких типах меню (например, меню опций и контекстное меню).
onMenuItemSelected- это общий обратный вызов. Вам не нужно использовать это обычно.onOptionsItemSelected- обратный вызов меню опций, аonContextItemSelected- обратный вызов контекстного меню. Используйте вместо этого эти два конкретных.
С помощью ADT 17 (версия 4.2) обратный вызов
onOptionsItemSelectedпозволит пользователю получить доступ к опциям меню из любого контекста, включая кнопку Меню и панель действий. Начиная с версии Android 3.0 предпочтительным методом является панель действий, доступ к которой можно получить изonMenuItemSelected. Если вы разрабатываете приложение, поддерживающее версии 2.3 или более ранние, чемonOptionsItemSelected, вы хотите пойти по этому пути.
Глядя на код, onMenuItemSelected может быть вызван щелчком меню опций (кнопка меню) или щелчком контекстного меню. В основном он просто перенаправляет клики на другие соответствующие методы.
Посмотрите на код здесь: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/app/Activity.java#2078
Comments