現在、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 の任意の位置で長いクリックを実行したときに、イベントは 1 回 (!) だけ機能します。複雑なことに、ウェブサイト上のリンクで長いクリックを実行すると、長いクリックが再び機能します...
それが SDK のバグであるかどうか、および/または OnLongClickListener がどのように機能しているかの私の考えに間違いがあるかどうか、誰かが説明できますか?!? :/
編集:
Nexus One でいくつかの異なるシナリオを実行して、次の結論に達しました。
誰かが私にヒントを与えることができれば本当に感謝しています...私は知恵の終わりです:(