で、プログラミングではどうやるのかは、ネットで探せば親切なサイトがたくさんあって、苦労せず実装できます。
…が、しかし、苦労しないはずが、なぜか苦労してしまったので、ハマったところのメモ。
ListViewで長押しによるメニュー表示を有効にする場合は、簡単に次のステップを踏めば良い。
- Activity#registerForContextMenu()でListViewのインスタンスを指定
- Activity#onCreateContextMenu()でメニュー生成
- Activity#onContextItemSelected()でメニュー選択時の動作を記述
で、その通りやったはずなんですが、長押ししてもActivity#onCreateContextMenu()が呼ばれない。
なんでだろうと四苦八苦しましたが、結論は次の1属性を行のレイアウトに指定していなかったため。
android:longClickable="true"
行のレイアウトは独自のものを定義して使用していますが、そのルートはRelativeLayoutにしました。
で、RelativeLayoutは長押しが、というかクリックがデフォルトで無効になっているので、いくら長押ししてもそのイベントが発生しなかったと。
上記の設定をしたら無事コンテキストメニューが呼ばれました。
わかっちゃえば何でもないんだけど、こういうところで引っかかっちゃうのが、自分のスキル不足なのか、Googleクオリティなのか…
こんにちは。
返信削除自分も同じ所で、かなりハマりこみました。
この記事見て、サクッと終わりました、感謝!