我目前正在与Android Api Lvl 8上的OnLongClickListener对抗。

采取以下代码:

this.webView.setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        System.out.println("long click");
        return true;
    }
});


它运作完美。我可以按一下WebView上的任何位置,每次都会触发该事件。

现在看一下这个:

this.webView.setOnLongClickListener(new OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        final EditText editText = getUrlTextField();

        switch (editText.getVisibility()) {
        case View.VISIBLE:
            editText.setVisibility(View.GONE);
            return true;
        case View.GONE:
            editText.setVisibility(View.VISIBLE);
            return true;
        default:
            return false;
        }
    }
});


假设URL EditText组件当前可见,则它将从显示中消失,并且在触发另一个长按事件时应再次显示。
但是,如果运行此命令,则在WebView上的任意位置上执行长按时,该事件仅会运行一次(!)。使事情变得复杂的是,当在网站上的链接上执行长按时,再次起作用。

谁能解释这是SDK中的错误和/或我认为OnLongClickListener的工作方式有误吗? :/

编辑:

我现在已经在Nexus One上运行了几种不同的方案,并得出以下结论:在运行时或多或少地更改布局会杀死OnLongClickListener ...我还没有找到一种使它可靠运行的方法...

如果有人能给我一个提示,我将不胜感激。

最佳答案

就个人而言,我最终在每次重新布局后都重新设置了侦听器。

10-07 12:45