Я создаю очень простое действие на основе списка.Я хочу добавить контекстное меню для каждого элемента в списке, поэтому я назвал registerForContextMenu(mListView)
.Затем я реализовал методы onCreateContextMenu
и onContextItemSelected
.
. onCreateContextMenu
работает (контекстное меню отображается правильно), но когда я нажимаю на элемент этого меню, ничего не происходит, контекстное меню просто исчезаети метод onContextItemSelected
не вызывается (я просто помещаю в него журнал для проверки).
Если это может помочь, обратите внимание, что к ListView
также прикреплен onItemClickListener
.
Я что-то забыл?
Спасибо!
РЕДАКТИРОВАТЬ: вот код (я спрятал некоторые несущественные вещи)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mListView = new ListView(this);
mContacts = new Vector<Contact>();
mAdapter = new ContactAdapter(this, mContacts);
registerForContextMenu(mListView);
mListView.setAdapter(mAdapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
... };
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v == mListView) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.list_item_contextmenu, menu);
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
Log.v("Contacts", "onContextItemSelected called");
return super.onContextItemSelected(item);
}
РЕДАКТИРОВАТЬ 2: я добавилonContextMenuClosed()
метод, который корректно вызывается при закрытии меню.