android - one - simulate click javascript
¿Cómo puedo restablecer el tiempo de un ejecutable postDelayed en onClick? (2)
¿Cómo puedo restablecer la hora cada vez que se llama a onClick?
No hay un mecanismo incorporado para lograr eso.
Sin embargo, puede mantener una referencia al Runnable
que publica, eliminarlo y volver a publicarlo nuevamente para reiniciar con el retraso original.
El resultado se vería algo así en su forma más simple:
Runnable mDelayedRunnable = new Runnable() {
@Override public void run() {
fadeOutAnimation(mButton);
mButton.setEnabled(false);
hasAnimationEnded = true;
canDisplayInCallControlls = true;
}
};
private void displayInCallButton() {
mButton.setEnabled(true);
if (canDisplayInCallControlls) {
canDisplayInCallControlls = false;
fadeInAnimation(mButton);
mButton.setEnabled(true);
mFrontView.removeCallbacks(mDelayedRunnable);
mFrontView.postDelayed(mDelayedRunnable, 5000);
}
}
Puede llamar de forma segura a removeCallbacks()
con un Runnable
que nunca se publicó en primer lugar (o incluso null
).
Si no desea mantener una referencia explícita a Runnable
, también puede optar por etiquetar la vista con ella. Simplemente no se olvide de limpiar los cambios de orientación, es decir, etc.
Tengo una lista que se llena desde un servidor. En el onClick de ListItem, muestro un botón para el número de segundos del hacha y lo vuelvo invisible. ¿Cómo puedo restablecer la hora cada vez que se llama a onClick? Aquí está mi listItem onClick:
private void displayInCallButton() {
mButton.setEnabled(true);
if (canDisplayInCallControlls) {
canDisplayInCallControlls = false;
fadeInAnimation(mButton);
mButton.setEnabled(true);
mFrontView.postDelayed(new Runnable() {
public void run() {
fadeOutAnimation(mButton);
mButton.setEnabled(false);
hasAnimationEnded = true;
canDisplayInCallControlls = true;
}
}, 5000);
}
}
Gracias de antemano.
Debe eliminar las devoluciones de llamada y configurarlas una vez más con la nueva con el tiempo de restablecimiento.
primero, configure la devolución de la llamada como
Runnable myRunnable = new Runnable() {
@Override
public void run() {
fadeOutAnimation(mButton);
mButton.setEnabled(false);
hasAnimationEnded = true;
canDisplayInCallControlls = true;
}
};
luego configúralo en mFrontView como,
mFrontView.postDelayed(myRunnable,5000)
Si quieres reiniciar, hazlo como
mFrontView.removeCallbacks(myRunnable);
mFrontView.postDelayed(myRunnable, 2000);