Android OnLongClickListener странное / ненадежное поведение
В настоящее время я борюсь против OnLongClickListener на Android Api Lvl 8.
Возьми этот код:
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;
}
}
});
Предполагая, что компоненты EditText URL в настоящее время видимы, они исчезают с экрана и должны отображаться снова при запуске другого события длинного щелчка. Но если вы запустите это, событие срабатывает только один раз (!), Когда вы выполняете длинный щелчок по любой позиции в WebView. Чтобы усложнить задачу, длинный щелчок снова работает, когда он выполняется по ссылке на веб-сайте ...
Может кто-нибудь объяснить, если это ошибка в SDK и / или есть ли ошибка в моих мыслях, как работает OnLongClickListener?!? : /
РЕДАКТИРОВАТЬ:
Я запустил несколько различных сценариев на Nexus One и пришел к следующему выводу: изменение макета во время выполнения более или менее убивает OnLongClickListener ... Я не нашел способа заставить его работать надежно вообще ...
Я был бы очень признателен, если бы кто-нибудь мог дать мне подсказку ... Я в своем уме :(