0

ジェスチャーが必要なのでOnGestureListenerオンにしていますが、今は機能しません。ListViewContextMenu

編集されたコード:

私はこれを私のメソッドの中に持って いonActivityCreatedます:FragmentListView

gestureDetector = new GestureDetector(getActivity(),
            new GestureListener());
    View.OnTouchListener gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureDetector.onTouchEvent(event);
        }
    };
    listView.setOnTouchListener(gestureListener);

これを行うとジェスチャーが許可されますが、コメントアウトすると ConextMenu が返されます。

showContextMenu(v) を使用できる可能性があることはわかっていますが、それが答えである場合、どこに配置すればよいかわかりません (いくつかの場所で試しました)。

アダプターが設定されているフラグメント内に、この空のメソッドがあります。

public void onLongPress(MotionEvent e) {

    return;
}

そのコードをそこに入れてみましたが、ビューへの参照はありません。続行する方法がわからない場合は、

4

1 に答える 1

1

GestureDetectorを使用してフリング ジェスチャを「見る」ことができ、また、コールバックで以下のコードを使用して をContextMenu長くクリックすると、 が開かれます。ListViewonLongPress()

@Override
public void onLongPress(MotionEvent e) {
    registerForContextMenu(listView);
    final int x = (int) e.getX();
    final int y = (int) e.getY();
    int position = listView.pointToPosition(x, y);
    final int firstVisible = listView.getFirstVisiblePosition();
    View v = listView.getChildAt(position - firstVisible);
    getActivity().openContextMenu(v);
}

完全なFragmentクラスの例は、ここにあります

于 2013-03-08T18:00:02.553 に答える