Родительский contextMenu добавляется - PullRequest
0 голосов
/ 12 мая 2019

У меня есть контекстное меню этой формы:

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");
});

Но это не было бы идеально, также оно дублировалось бы везде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...