OnClickListener es un interface y mediante el uso new OnClickListener()
como parámetro para btn1.setOnClickListener En realidad, es creando una Anonymous Inner Class que implementa OnClickListener . Y el método onClick debe ser declarado porque es un método abstracto dentro de esa clase de interfaz. Cualquier código que escriba dentro de Click se ejecutará cuando se presione el botón.
actualización
hacerlo utilizando la clase interna anónima en un objeto:
//declaring OnClickListener as an object
private OnClickListener btnClick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
};
//passing listener object to button
btn1.setOnClickListener(btnClick);
para hacerlo sin necesidad de utilizar la clase Anónimo:
public class YourActivity extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
Button b = new Button(this);
//setting listener to button
b.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
La única diferencia entre estos enfoques es, si su botón contiene clic código de evento que se supone que es válido/disponible solo para ese botón, entonces puede usar la clase interna como lo hace en su código (porque es fácil hacerlo de inmediato). Sin embargo, si hay varios botones que requieren que se ejecute el mismo código en el evento onClick, entonces puede definir listener como un objeto y pasárselo.
Hola odo estamos pasando un objeto como una argumento.Básicamente estamos creando una clase interna que anula el método onClick. –