Android: открытие ContextMenu из onLongPress в настраиваемом WebView

В настоящее время я пытаюсь получить пользовательский WebView, который отображает ContextMenu при нажатии в течение более длительного времени. Поскольку класс WebView по умолчанию отображает ContextMenu только тогда, когда ссылка является longPressed, я написал свой собственный класс, чтобы переопределить это поведение:

public class MyWebView extends WebView {
    Context context;
    GestureDetector gd;

    public MyWebView(Context context, AttributeSet attributes) {
        super(context, attributes);
        this.context = context;
        gd = new GestureDetector(context, sogl);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gd.onTouchEvent(event);
    }

    GestureDetector.SimpleOnGestureListener sogl =
                new GestureDetector.SimpleOnGestureListener() {

        public boolean onDown(MotionEvent event) {
            return true;
        }

        public void onLongPress(MotionEvent event) {
            // The ContextMenu should probably be called here
        }
    };
}

Это работает без проблем, обнаруживается longPress и вызывается метод onLongPress, однако я не понимаю, когда дело доходит до отображения ContextMenu. Я пробовал делать это обычным способом в своей деятельности:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);

    MyWebView mwv = (MyWebView) findViewById(R.id.mwv);
    registerForContextMenu(mwv);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                    ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context, menu);
}

Однако, когда я долго нажимаю MyWebView в эмуляторе, ничего не происходит. Что мне нужно вызвать из onLongPress () для отображения ContextMenu?

5
задан jbaiter 3 February 2011 в 02:06
поделиться