Comportamento estranho / não confiável do Android OnLongClickListener
Atualmente, estou lutando contra o OnLongClickListener no Android Api Nvl 8.
Pegue este código:
this.webView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
System.out.println("long click");
return true;
}
});
Funciona perfeitamente. Eu posso pressionar em qualquer lugar do WebView e o evento é acionado toda vez.
Agora dê uma olhada neste:
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;
}
}
});
Supondo que os componentes URL EditText estejam visíveis no momento, eles desaparecem da exibição e devem ser mostrados novamente quando outro evento de clique longo for acionado. Mas, se você executar isso, o evento funcionará apenas uma vez (!) Quando você executar um clique longo em qualquer posição no WebView. Para complicar as coisas, o clique longo funciona novamente quando é executado em um link no site ...
Alguém pode explicar se é um bug no sdk e / ou se há um erro no meu pensamento de como o OnLongClickListener está funcionando?!? : /
EDITAR:
Já executei vários cenários diferentes em um Nexus One e cheguei à seguinte conclusão: Alterar o layout no tempo de execução mata mais ou menos o OnLongClickListener ... Não encontrei uma maneira de fazê-lo funcionar de maneira confiável ...
Eu realmente apreciaria se alguém pudesse me dar uma dica ... Estou no meu juízo final :(