¿Cómo capturar un evento de clic en un botón?

Desarrollador .NET aquí acaba de empezar con Eclipse y Android.

¿Puede alguien mostrarme de la manera más sencilla posible, con el mínimo absoluto de líneas de código, cómo hacer algo cuando se hace clic en un botón?

Mi botón tiene id button1 y sólo quiero ver dónde / cómo escribir el controlador onClick() .

Así que digamos que tengo imageview1 puesto a invisible. ¿Cómo lo haría visible cuando se hace clic en el botón?

EDITAR:

Gracias a todos, pero ya que no uno solo de sus ejemplos de trabajo para mí, voy a probar esto: ¿Puede alguien por favor publicar el código completo para hacer este trabajo? No sólo el método, porque cuando intento utilizar CUALQUIERA de sus métodos consigo errores por todas partes así que obviamente algo más falta. Necesito verlo todo, empezando por todas las importaciones.

/src/com/example/MyClass.java

 package com.example import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MyClass extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { ImageView iv = (ImageView) findViewById(R.id.imageview1); iv.setVisibility(View.VISIBLE); } }); } } 

/res/layout/main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:src="@drawable/image" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageview1" android:visibility="invisible" /> </LinearLayout> 

La mejor manera: Deja que tu actividad implemente View.OnClickListener y escribe tu método onClick como este:

 public void onClick(View v) { final int id = v.getId(); switch (id) { case R.id.button1: // your code for button1 here break; case R.id.button2: // your code for button2 here break; // even more buttons here } } 

A continuación, en el archivo de diseño XML, puede establecer los oyentes de clic directamente utilizando el atributo android:onClick :

 <Button android:id="@+id/button1" android:onClick="onClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> 

Esa es la forma más limpia de cómo hacerlo. Lo uso en todos los proyectos de minas hoy, también.

Basta con declarar un método, por ejemplo: si ur button id es button1 entonces,

 button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(Context, "Hello", Toast.LENGTH_SHORT).show(); } }); 

Si desea hacer visible el imageview1 entonces en ese método escriba:

 imageview1.setVisibility(ImageView.VISIBLE); 

Todas las respuestas se basan en la clase interna anónima. Tenemos una forma más de agregar eventos de clic para los botones, así como otros componentes también.

Una actividad necesita implementar la interfaz View.OnClickListener y necesitamos anular la función onClick. Creo que este es el mejor enfoque en comparación con el uso de clase anónima.

 package com.pointerunits.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); login = (Button)findViewById(R.id.loginbutton); login.setOnClickListener((OnClickListener) this); Log.i(DISPLAY_SERVICE, "Activity is created"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { Log.i(DISPLAY_SERVICE, "Button clicked : " + v.getId()); } } 

Tomado de: http://developer.android.com/guide/topics/ui/ui-events.html

 // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked } }; protected void onCreate(Bundle savedValues) { ... // Capture our button from layout Button button = (Button)findViewById(R.id.corky); // Register the onClick listener with the implementation above button.setOnClickListener(mCorkyListener); ... } 

Sólo puede hacerlo en el método onCreate () de su actividad. Por ejemplo:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Assign the button to a variable Button button1 = (Button)findViewById(R.id.button1); //Assign the ImageView to a final variable, so that it's //accessible from an inner class ImageView imageView = (ImageView)findViewById(R.id.imageview1); //Assign it a new OnClickListener button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { imageView.setVisibility(View.VISIBLE); } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.