基本的に、ユーザーがグリッド ビューのセルを短くクリックまたは長くクリックしたときに、別のコンテキスト メニューを表示したいと考えています。私が抱えている問題は、ユーザーが短くクリックすると OnItemClick リスナーが呼び出され、デバッガーがコンテキスト メニューを表示するコードに到達するのを確認できますが、そこから onCreateContextMenu に移動するのではなく、onItemLongClick に移動します。
私はブール値を使用して長いクリックコードが実行されないようにしようとしましたが、これが実行されても onCreateContextMenu はまったく呼び出されません。
onItemLongClick リスナーを削除すると、短いクリック リスナーが正しく機能し、コンテキスト メニューが正しく表示されます。
他の人がこれと同様の質問をしたことは知っていますが、まだうまくいく解決策を見つけることができませんでした. 誰かがこれを解決したり、正しい方向に向けたりできる場合は、お知らせください。事前に感謝します。報奨金は、私を正しい方向に向けることさえできる人に授与されます.
これは、リスナーのコードの簡略化されたバージョンです。
mTGrid.setOnItemClickListener(new OnItemClickListener() {
//this listener should show the context menu for a short click on the gridview.
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "standard";
parent.showContextMenuForChild(v);
}
});
mTGrid.setOnItemLongClickListener(new OnItemLongClickListener() {
//this listener should show the context menu for a long click on the gridview.
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
mRequiredMenu = "options";
parent.showContextMenuForChild(v);
}
});