2011-09-17 85 views
20

Siempre uso el evento onclick() en la mayoría de mis proyectos. Pero, leí sobre OnClickListener(). ¿Alguien puede decir cuál es la diferencia entre estos dos? ¿Y cuál es mejor usar en la aplicación de Android?Diferencia entre el evento OnClick() y OnClickListener?

+3

Has aceptado una respuesta incorrecta. Sean Owen o userSeven7s es correcto. – Reno

+0

posible duplicado de [¿Cómo se diferencia exactamente el atributo android: onClick XML de setOnClickListener?] (Http://stackoverflow.com/questions/4153517/how-exactly-do-the-androidonclick-xml-attribute-differ-from- setonclicklistener) –

Respuesta

27

No estoy seguro de que la pregunta sea clara. View.OnClickListener es una interfaz que define el método onClick(View). Si tiene una clase que tiene la intención de escuchar los clics, ambos deben implementar la interfaz (si aún no lo hace), e implementar este método también. Tienes que usar ambos; no son alternativas de alguna manera.

+0

Tan triste que hay un anillo de votación en Android que vota por las respuestas correctas :( – Reno

23

OnClickListener es la interfaz que necesita implementar y se puede establecer en una vista en código java.

La última versión de Android agregó un atributo xml a las vistas llamadas android:onclick, que se pueden usar para manejar clics directamente en la actividad de la vista sin necesidad de implementar ninguna interfaz.

Ambos funcionan de la misma manera, solo que uno se configura a través del código java y el otro a través del código xml.

11

OnClickListener es lo que espera a que alguien haga clic en realidad, onclick determina lo que sucede cuando alguien hace clic

el oyente es una clase, el onclick es un método, esta distinción no es muy útil en casos sencillos, pero si quieren ser más complicado se hace más necesario

+1

+1 para abreviar n al punto de descripción ... –

0

Utilizamos

public void button_onClick_name(View v) 
{ 
------- 
} 

definir un método de la clase. Pero para definir un componente Haga clic en evento dentro de una clase, usamos onclick oyente.

20

Supongo que por onClick que utiliza es el que define en el diseño XML. Estas dos son alternativas que cumplen la misma función pero se implementan de manera diferente.

  1. El onClick con la unión en Layout XML es una función de unión entre onClick y la función que va a llamar. La función debe tener un argumento (View) para que onClick funcione.

  2. Una OnClickListener es una interfaz que cualquier clase podría implementar. Como es una interfaz que cualquier clase podría implementar, tiene más flexibilidad y es más compleja en su forma. Pocas flexibilidades que podría tener con OnClickListener

    • Puede cambiar fácilmente una implementación de escucha por otra si es necesario.
    • Un OnClickListener le permite separar la acción/el comportamiento del evento click del View que desencadena el evento. Mientras que para casos simples esto no es tan importante, para el manejo de eventos complejos, esto podría significar una mejor legibilidad y mantenimiento del código
    • Dado que OnClickListener es una interfaz, la clase que lo implementa tiene flexibilidad para determinar las variables y métodos de instancia que necesita para manejar el evento. De nuevo, esto no es gran cosa en casos simples, pero para casos complejos, no queremos mezclar necesariamente las variables/métodos relacionados con el manejo de eventos con el código de la Vista que desencadena el evento.
0

considerar "OnClickListener" como un tipo que está a la espera de su usuario haga clic en el botón de su aplicación. Luego su chico ejecutará su método OnClick().

Debe poner una identificación en su botón en su archivo xml, y luego darle un nombre en su archivo MainActivity.java. Luego configura un oyente click para tu chico. Y agregue su método onClick. Por eso onClick se une a la interfaz de View.OnClickListener: https://developer.android.com/reference/android/view/View.OnClickListener.html

Ejemplo:

Button myButton = (Button)findViewById(R.id.myButton); 
myButton.setOnClickListener(new View.OnClickListener(){ 
    @override 
    public void onClick(View v) { 
     // your method... 
    } 
} 
0

Hay un par de razones por las que es posible que desee establecer mediante programación una OnClickListener. El primero es si alguna vez desea cambiar el comportamiento de su botón mientras se ejecuta su aplicación. Puede apuntar su botón a otro método por completo, o simplemente desactivar el botón estableciendo un OnClickListener que no hace nada.

Cuando define un oyente utilizando el atributo onClick, la vista busca un método con ese nombre solo en su actividad de host. Establecer programáticamente un OnClickListener le permite controlar el comportamiento de un botón desde otro lugar que no sea la actividad del host. Esto será muy relevante para Fragments, Fragments, siempre necesita usar OnClickListeners para controlar sus botones, ya que no son Actividades, y no se buscarán oyentes definidos en onClick.

5
Button button = (Button)findViewById(R.id.buttonId); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Do stuff 
    } 
}); 

OnClickListener es una interfaz y onClick es el método de OnClickListener.

0

Puede agregar el atributo android:onClick="your_method" en su XML.

Ejemplo:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click" 
    android:onClick="your_method"/> 
0

Utilizamos OnClick en XML y OnClickListner en java código. Ambos se usan para realizar una función.

0

Cuando queremos agregar click oyente al botón en código Java, usamos OnClickListener.
Cuando queremos agregar click oyente al botón en el archivo de diseño, usamos android:onClick="your_method"
Si usa la variante XML, debe implementar your_method en su clase de aplicación.

0

Hay un par de razones por las que es posible que desee configurar programáticamente OnClickListener. El primero es si alguna vez desea cambiar el comportamiento de su botón mientras se ejecuta su aplicación. Puede apuntar su botón a otro método por completo, o simplemente desactivar el botón configurando OnClickListener que no hace nada.

Cuando define un oyente utilizando el atributo onClick, la vista busca un método con ese nombre solo en su actividad de host. Configurar programáticamente un OnClickListener le permite controlar el comportamiento de un botón desde otro lugar que no sea la actividad del host.Esto será muy relevante cuando aprendamos sobre los Fragmentos, que son básicamente mini actividades, que le permiten crear colecciones de vistas reutilizables con su propio ciclo de vida, que luego se pueden ensamblar en actividades. Los fragmentos siempre necesitan utilizar OnClickListeners para controlar sus botones, ya que no son Actividades, y no se buscarán oyentes definidos en onClick.

0

todos han mencionado acerca de OnClickListener listner que uno siempre ha utilizado. Quiero agregar un punto más funciona como método y no necesita ser referencia por lo que es útil cuando tiene que agregar el botón después de ejecutar alguna tarea por lo que no puede hacer referencia para OnClickListener.

Para una example cuando creamos ViewPager con sólo el diseño (no hay fragmentos) si se pone un botón en cualquier diseño que insialized sólo cuando la disposición visibles por lo que no puede utilizar el método de findViewById botón en ese caso becomed útil sólo hay que poner ese método en actividad !!

0

Aquí está la terminología simple Si estás en casa y quieres llamar a alguien ... puedes llamar directamente y pueden escucharte. (use onclick). Pero si está afuera y desea Llamar a alguien a su casa, necesita usar un teléfono o Internet. (Necesita usar onclicklistener). En Android, todo comienza desde casa, es decir main_activity Esta es la forma en que android facilita el trabajo; Cuando tiene una actividad, no tiene que adjuntar un oyente, crear un objeto y definirlo. Solo usa onClick. Onclicklistener generalmente se usan en Fragments. Así que mantén la codificación.

Cuestiones relacionadas