Что такое «контекстное меню» и метод registerForContextMenu () - PullRequest
17 голосов
/ 02 февраля 2012

В Activity class, есть метод с именем registerForContextMenu(View view).

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

  • Что означает " контекстное меню "? Значит физическая кнопка меню или как?
  • Мне также нужно некоторое объяснение о методе registerForContextMenu(View view), мне не ясно, просто читать документ онлайн.

Ответы [ 2 ]

11 голосов
/ 02 февраля 2012

Это в основном всплывающее меню, которое отображается при длинном щелчке по определенным элементам пользовательского интерфейса (обычно это элемент в ListView).

Вам следует ознакомиться с разделом Меню Руководства разработчика.

7 голосов
/ 02 февраля 2012

Это от разработчиков Android: Меню - Разработчики Android

Контекстное меню - это плавающее меню, которое появляется, когда пользователь выполняет длинный щелчок по элементу. Он предоставляет действия, которые влияют на выбранный контент или контекстный фрейм.

Представьте, что вам нужно контекстное меню в списке

//Constants for context menu options
public static final int MENU_MARK = 1;
public static final int MENU_REMOVE = 2;

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    ...
    ...
    // Specify that your listview has a context menu attached
    registerForContextMenu(getListView());
}

// here you create the context menu
@Override
public void onCreateContextMenu(ContextMenu menu, View v, 
   ContextMenuInfo menuInfo) {
  menu.add(Menu.NONE, MENU_MARK, Menu.NONE, "MARK");
  menu.add(Menu.NONE, MENU_REMOVE, Menu.NONE, "Remove");
}

// This is executed when the user selects an option
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
    case MENU_MARK:
        mark_item(info.id);
        return true;
    case MENU_REMOVE:
        delete_item(info.id);
        return true;
    default:
        return super.onContextItemSelected(item);
   }
}
...