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.

  • Haga clic en el elemento de lista de un ListView no responde
  • Android: onClick responde sólo al segundo clic en listview
  • Android, ¿Cómo puedo obtener texto de TextView en OnClick
  • Android para detectar cuando se mantiene pulsado un botón
  • distinguir un golpe y hacer clic en android (pasar el evento a otra vista si es un golpe)
  • Android no puede encontrar el método desde el botón onClick en ListView Row
  • Android Clic en el texto de la pantalla
  • Cambiar el contenido de la ficha dependiendo del elemento del hilador seleccionado
  • ¿Pasar un argumento al llamar a setOnClickListener?
  • Android highlight ImageButton onclick
  • No se pudo encontrar un método onClick_Foo (Ver) - la primera vez que se ejecuta en Android Lollipop
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.