Evento de clic transferido a la siguiente Actividad iniciada

Estoy afectado por la manipulación de eventos extraños en Android. Mi problema es que si el usuario hace clic en un Button muchas veces realmente rápido, el evento se pone en cola y se transfiere más a la siguiente Activity .

Aquí hay un ejemplo:

 <Button android:id="@+id/btn_home_show" style="@style/main_buttons" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/home_label_show" /> 

Activity onClick :

 public void onClick(View view) { int viewId = view.getId(); if (viewId == EXPECTED_VIEW_ID) { Intent intent = new Intent(this, CarouselActivity.class); startActivity(intent); } } 

En mi Activity tengo otro elemento que se puede hacer clic con las mismas coordenadas en la pantalla.

Lo que sucede es que si el usuario hace clic muy rápido en el Button entonces este evento de clic se transfiere a la actividad recién iniciada y se produce otra manipulación onClick .

He intentado 2.3.3 & 2.3.5 versión de marco y el comportamiento es el mismo. ¿Algunas ideas?

2 Solutions collect form web for “Evento de clic transferido a la siguiente Actividad iniciada”

Una solución simple sería agregar un valor booleano que determina si se maneja o no un clic y luego crear un hilo que duerme luego establece el valor en true

 public void onClick(View view) { if (inputAllowed) { //do stuff } } boolean inputAllowed = true; private class ButtonDelay extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { } @Override protected Void doInBackground(Void... params) { try { inputAllowed = false; Thread.sleep(500); inputAllowed = true; } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(final Void unused) { } } 

Y inicie el asynctask inmediatamente en onCreate (). En cuanto a por qué sucede esto supongo que la nueva actividad ha creado el nuevo botón y ya que el usuario está haciendo clic rápidamente en él registra estos clics.

Su problema no es que el evento de clic se transfiera a la nueva actividad. El problema es que después del primer clic que está haciendo su nueva actividad comenzará a aparecer. Si el usuario vuelve a hacer clic durante algunas veces, su nueva actividad se carga y recibe el clic tal como se supone que debe hacerlo. Supongo que está bloqueando la UI-Thread durante su cambio de actividad y debido a que el usuario no está seguro de si ha pulsado el botón e intenta hacer clic de nuevo.

Trate de fijar su Actividad de conmutación. Sólo podría mostrar una superposición con un Spinner que captura todos los eventos de clic hasta que esté listo para mostrar la interfaz de usuario correcta de la actividad. De esta manera el usuario se da cuenta de que algo sucedió y dejará de hacer clic y esperar a que el hilandero a desaparecer.

  • Cómo dejar OnClick en la función de la llamada de adaptador ListView de la actividad
  • OnItemClickListener usando ArrayAdapter para ListView
  • ¿Cómo puedo inhabilitar todos los eventos táctiles en todos los niños de un ViewGroup?
  • Evitar que DialogFragment se rechace cuando se hace clic en el botón
  • TextView onClick () no funciona
  • Evento OnClick para un botón en una notificación personalizada
  • ¿Cómo exactamente el atributo android: onClick XML difiere de setOnClickListener?
  • Cómo borrar el edittext cuando onclick en el botón
  • Descartar Snackbar A la izquierda deslizar
  • ¿Cómo manejar el botón OnClick del evento de tarjeta en GridView? Mejores prácticas
  • Android: No se puede obtener un encabezado / pie de lista ListView que se puede hacer clic
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.