Ho un pulsante con un OnClickListener. Per scopi illustrativi, si consideri un pulsante che mostra una finestra di dialogo modale:Gestione dei pulsanti rapidi sui pulsanti
public class SomeActivity ... {
protected void onCreate(Bundle state) {
super.onCreate(state);
findViewById(R.id.ok_button).setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
// This should block input
new AlertDialog.Builder(SomeActivity.this)
.setCancelable(true)
.show();
}
});
}
condizioni d'uso normali, viene visualizzata la finestra di allarme e blocca ulteriormente ingresso. Gli utenti devono chiudere la finestra di dialogo prima che possano toccare nuovamente il pulsante.
Ma a volte il pulsante OnClickListener viene chiamato due volte prima che venga visualizzata la finestra di dialogo. Puoi duplicarlo abbastanza facilmente toccando molto velocemente sul pulsante. Generalmente devo provare più volte prima che accada, ma prima o poi innescerò più chiamate onClick (...) prima che la finestra di dialogo blocchi l'input.
Vedo questo comportamento in Android 2.1 sul telefono Motorola Droid. Abbiamo ricevuto 4 rapporti sugli arresti anomali nel mercato, indicando che ciò accade occasionalmente alle persone.
A seconda di cosa fanno i nostri OnClickListener, questo provoca ogni sorta di scempio. Come possiamo garantire che i dialoghi di blocco bloccino effettivamente l'input dopo il primo tocco?
Hai provato a creare AlertDialog all'esterno di onClick() e chiama semplicemente show() all'interno di onClick()? – jfpoilpret