Android: clic largo en un botón -> realizar acciones

Quiero utilizar el mismo botón para realizar 2 métodos diferentes. Un método cuando el usuario solo hace clic en él y un segundo método (diferente) cuando el usuario hace clic LONGO.

Yo uso esto para el solo clic corto (que funciona muy bien):

Button downSelected = (Button) findViewById(R.id.downSelected); downSelected.setOnClickListener(new OnClickListener() { public void onClick(View v) { method(); } } }); 

He intentado agregar un longClickListener pero no funcionó.

Apreciar cualquier idea sobre cómo resolver esto.

¡Gracias!

Lo he hecho antes, acabo de usar:

 down.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { // TODO Auto-generated method stub return true; } }); 

Por documentación:

Public void setOnLongClickListener (View.OnLongClickListener l)

Desde: Nivel de API 1 Registre una devolución de llamada que se invocará cuando se haga clic y mantenga esta vista. Si esta vista no se hace clic en largo, se convierte en clicable.

Observe que requiere devolver un booleano, esto debería funcionar.

Para obtener las dos funciones de trabajo para una imagen clicable que responderá a ambos clics cortos y largos, he intentado lo siguiente que parece funcionar perfectamente:

  image = (ImageView) findViewById(R.id.imageViewCompass); image.setOnClickListener(new OnClickListener() { public void onClick(View v) { shortclick(); } }); image.setOnLongClickListener(new View.OnLongClickListener() { public boolean onLongClick(View v) { longclick(); return true; } }); 

// Luego las funciones que se llaman:

  public void shortclick() { Toast.makeText(this, "Why did you do that? That hurts!!!", Toast.LENGTH_LONG).show(); } public void longclick() { Toast.makeText(this, "Why did you do that? That REALLY hurts!!!", Toast.LENGTH_LONG).show(); } 

Parece que la manera fácil de declarar el elemento en XML como clicable y luego definir una función para llamar en el clic sólo se aplica a los clics cortos – debe tener un oyente para diferenciar entre clics cortos y largos.

Al principio, cuando implementé un longClick y un clic para realizar dos eventos separados, el problema que enfrentaba era que cuando tenía un longclick, la aplicación también realizaba la acción que se realizaría con un simple clic. La solución que me di cuenta fue cambiar el tipo de retorno de longClick a true, que normalmente es false por defecto. Cambiarlo y funciona perfectamente.

Intente usar un listener de ontouch en lugar de un clicklistener.

http://developer.android.com/reference/android/view/View.OnTouchListener.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.