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?

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.

  • OnItemClickListener consume eventos onClickListener
  • En EditText, aparece un diálogo al hacer clic en un subconjunto específico de texto
  • Float: izquierda deja de hacer clic en evento en android?
  • Método onClick de Android
  • Cómo establecer el evento onClick en un ImageButton?
  • No se pudo encontrar un método onClick (View) en la clase de actividad android.view.ContextThemeWrapper para onClick handler
  • Ocultar / mostrar MenuItem en el clic de la barra de acción android
  • Listview no se puede hacer clic cuando se puede seleccionar la vista de texto dentro de esa vista de lista
  • Cómo ejecutar "callOnClick ()" para Android API 8?
  • Android MediaPlayer Singleton
  • android- puede hacer que un objeto dibujado en un lienzo haga clic
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.