Android – método setOnClickListener cómo funciona?

Tengo problemas para entender este código. Tengo sombrero findViewById obtendrá el widget de botón y luego lo lanzará. Entonces va a usar el btn para llamar al método setOnClickListener. Sin embargo no sé cuál es ese argumento que es pasado en el setOnClickListener y nunca he visto el código como eso antes. ¿Cómo es que crea un nuevo objeto pero es capaz de crear un método propio dentro del argumento de otro método? Sería genial si alguien puede explicar eso. Además, ¿qué tipo de objeto tiene el método setOnClickListener?

btn = (Button)findViewById(R.id.firstButton); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setText(months[rand.nextInt(12)]); tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1)); } }); 

Funciona así. View.OnClickListenere se define –

 public interface OnClickListener { void onClick(View v); } 

Por lo que sabemos que no se puede instanciar un objeto OnClickListener , ya que no tiene un método implementado. Así que hay dos maneras en que puede pasar: puede implementar esta interfaz que reemplazará el método onClick siguiente manera:

 public class MyListener implements View.OnClickListener { @Override public void onClick (View v) { // your code here; } } 

Pero es tedioso hacerlo cada vez que desea establecer un oyente de clics. Así que para evitar esto se puede proporcionar la implementación del método en el lugar, al igual que en un ejemplo que dio.

setOnClickListener toma View.OnClickListener como su parámetro.

Que lo que el manual dice acerca del método setOnClickListener es:

 public void setOnClickListener (View.OnClickListener l) 

Se agrega en el nivel 1 de la API. Registre una devolución de llamada para que se invoque cuando se haga clic en esta vista. Si esta vista no se puede hacer clic, se puede hacer clic.

Parámetros

L View.OnClickListener: La devolución de llamada que se ejecutará

Y normalmente tienes que usarlo así

 public class ExampleActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedValues) { ... Button button = (Button)findViewById(R.id.corky); button.setOnClickListener(this); } // Implement the OnClickListener callback public void onClick(View v) { // do something when the button is clicked } ... } 

Echa un vistazo a esta lección así Construir una Calculadora Simple usando Android Studio .

  • SetOnItemClickListener en ListView que afecta a varias filas
  • ¿Cómo configurar onClickListener para partes separadas de la lista personalizada?
  • ¿Cuál es la diferencia entre RxJava 2 Cancellable y Desechable?
  • ¿Cómo funciona finish () en el evento OnClick?
  • PreferenceFragment OnPreferenceClickListener () sólo funciona una vez
  • Cómo quitar un elemento seleccionado de ListView utilizando CursorAdapter
  • Widget de la aplicación de Android listview onclick listener
  • Android: Detectar el botón ACTION_UP fuera del evento
  • ¿Cómo implementar el evento de clic en el icono de la barra de herramientas?
  • Fragmento implementa OnClickListener
  • Cómo configurar OnClickListener para ScrollView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.