Я зарегистрировал каждый элемент для onClick
, contextMenu, а также добавил тег, который можно использовать для идентификации конкретного виджета для запуска контекстного меню.
registerForContextMenu(imgView);
imgView.setTag(asset.id);
imgView.setOnClickListener(this);
Когда запускается контекстное меню, я получаю тег из виджета для дальнейшего использования:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
if (!(v instanceof ImageView))
return;
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "Launch");
assetIdViaContextMenu = (String) v.getTag();
}
При нажатии на пункт меню в контекстном меню я использую assetIdViaContextMenu
, чтобы узнать, на какой виджет ссылается:
@Override
public boolean onContextItemSelected(MenuItem item)
{
if (assetIdViaContextMenu == null)
return true;
Asset asset = getAsset(assetIdViaContextMenu);
if (item.getTitle() == "Launch")
{
....
Кроме того, мне пришлось отменить отмену контекстного меню.
@Override
public void onContextMenuClosed(Menu menu)
{
assetIdViaContextMenu = null;
super.onContextMenuClosed(menu);
}
Надеюсь, это поможет кому-то в будущем. Если вы думаете, я мог бы улучшить это, пожалуйста, дайте мне знать.