我目前正在与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 ...我还没有找到一种使它可靠运行的方法...
如果有人能给我一个提示,我将不胜感激。
最佳答案
就个人而言,我最终在每次重新布局后都重新设置了侦听器。