Мое приложение имеет GridView
(показано DialogFragment
), которое показывает число ColourCell
с. Я хочу, чтобы пользователь мог долго нажимать любую ColourCell
и видеть всплывающее контекстное меню. У них также есть возможность щелкнуть, чтобы выбрать ColourCell
.
Я могу заставить его работать в основном, но мне нужно дважды нажать ColourCell
, чтобы увидеть всплывающее меню. Первый раз, когда я долго нажимаю, ничего не происходит. Затем я снова нажимаю и на этот раз появляется меню (и последующие разы).
В моем DialogFragment
есть следующее:
(mUsersColours
- это ArrayList
из Colours
для отображения в ColourCell
с; mGVCurrentColours
- это GridView
)
SelColourAdapter mColourAdapter =
new SelColourAdapter(
mContext,
mUsersColours);
mGVCurrentColours.setAdapter(mColourAdapter);
mGVCurrentColours.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// Select clicked cell, and get current colour
ColourCell clicked = view.findViewById(R.id.colour_cell);
if(clicked == null) return;
clicked.setTicked(true);
}
});
mGVCurrentColours.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
registerForContextMenu(view);
return false;
}
});
Думаю, проблема в том, что первое долгое нажатие регистрирует меню, а затем второе показывает его, но я могу ошибаться.