我目前正在与 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 ......我还没有找到一种让它可靠工作的方法......
如果有人能给我一个提示,我将不胜感激......我无能为力:(