SetOnClickListener (nuevo OnClickListener () {})

package android.example; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class Android_eg1 extends Activity { Button bt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bt=(Button)findViewById(R.id.click); bt.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show(); } }); } //onCreate() }//class 

Soy nuevo en java y conozco los fundamentos de core java. Este es el programa de ejemplo que traté de saber sobre el manejo de eventos a través de una clase de botón. No pude entender esta parte:

 "bt.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "You made a mess", Toast.LENGTH_LONG).show(); } });" 

Dentro del setOnClickListener (parámetro) ¿por qué dan una definición de función? (Public void onClick (View v)})

¿Es esto aceptable?

En java, se trata de una clase generada que implementa la interfaz. Puede generar una clase sobre la marcha dentro del argumento de la función o puede crear una clase externa y pasar una instancia de esta clase o implementa la interfaz necesaria para su oyente por su activty y pasando su actividad como escucha.

setOnClickListener toma un objeto OnClickListener como parámetro. Básicamente está creando una subclase anónima OnClickListener en el parámetro.

Es como lo mismo en java cuando se puede crear un nuevo hilo con una subclase anónima, por ejemplo:

 Thread t = new Thread(new Runnable() { public void run(){...} }); 

El botón de clic es un identificador de evento. Usted puede entender claramente la diferencia, si se implementa OnClickListner lugar de utilizar en su código de ejemplo. Cuando implementa OnClickListner su IDE muestra la opción de utilizar métodos no implementados relacionados con la interfaz OnClickListner . Allí puedes ver public void onClick método public void onClick . Si resumir el escenario;

  • Tienes un botón
  • Usted debe tener una interfaz que escucha los eventos de botón – OnClickListner
  • Establezca su evento de botón para escuchar los eventos del usuario – button.setOnClickListner(this)
  • ¿Qué desea hacer después de que el evento entre dentro del método onClick

Este código de ejemplo completo puede darle un entendimiento claro sobre eso.

OnclickListener es una interfaz (Listener) y setOnClickListener () es un método que necesita un objeto de tipo onClickListener. Podemos crear la clase anónimamente. Es decir, se realiza llamando a una clase de ningún nombre (ANONYMOUS CLASS DECLARATION) que implementa OnClickListener y por lo tanto tendrá que implementar el método void onClick. Por lo tanto, tendremos el objeto de tipo de interfaz y esto se utiliza para la programación taquigrafía. Para obtener más información sobre la clase anónima, visite http://www.techartifact.com/blogs/2009/08/anonymous-classes-in-java.html

SetOnClickListener función con parámetro de tipo OnClickListener ()

OnClickListener () es una interfaz: (analogía a c + + clase base abstracta)

el código:

  bt.setOnClickListener(new OnClickListener() /* this is the definition of anonymous class which implements OnClickListener() */ /* equivalent to : class OnClickListener_implementation implements OnClickListener */ { public void onClick(View v) { //your code here } ); 

Esto significa: Construir un objeto de una clase que implementa la interfaz OnClickListener declarando onClick como especificado

  • Añadir ActionBar a una preferenciaActividad
  • Utilizar la aplicación Wicket existente para la aplicación Android
  • ViewPager java.lang.OutOfMemoryError: el tamaño de mapa de bits supera el presupuesto de VM
  • Deserializar JSON a Java enum
  • Cómo puedo crear un nuevo proyecto sin appcompat_v7
  • Problema de velocidad de Android con la deserialización mediante SimpleXML
  • Retrofit call dentro de AsyncTask
  • Tensorflow Android demo: cargar un gráfico personalizado?
  • Colores en Android
  • Diferencia entre OpenCV y OpenCL
  • Cómo convertir documentos de oficina en html en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.