У меня есть контекстное меню этой формы:
parent.setOnCreateContextMenuListener((menu, v, menuInfo) -> menu.add("action1"))
child.setOnLongClickListener(v -> true);
child.setOnClickListener(View::showContextMenu);
child.setOnCreateContextMenuListener((menu, v, menuInfo) -> menu.add("action2"));
Когда я долго нажимаю на родителя, я получаю ожидаемое контекстное меню с "action1", однако, когда я нажимаю дочернюю кнопку, я получаюконтекстное меню:
action2
action1
Я предполагаю, что событие "createContextMenu" распространяется до родителя, и, следовательно, обратного вызоваmenu.add("action1")
запускается от родителя, после того, как menu.add("action2")
запускается от ребенка.
Как мне лучше всего это исправить?
Сначала я хотел бы проверить, чтопредставление v
, передаваемое в качестве параметра слушателю, было равно this
, то есть:
parent.setOnCreateContextMenuListener((menu, v, menuInfo) -> {
if (v == parent) menu.add("action1");
});
Но это не было бы идеально, также оно дублировалось бы везде.