Evento OnClick en una aplicación de Android

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Versión sencilla

main.xml
…
<Button android:text="Button"
 android:id="@+id/button1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:onClick="btnPulsado"/>
...
MainActivity.java
public void btnPulsado(View v){
 TextView tv = findViewById(R.id.textView1);
 tv.setText("botón pulsado");
}

Usando la clase OnClickListener

Con esto conseguiremos tener solamente una única clase que gestione todos los eventos de click.

public class Main extends AppCompatActivity{
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
        
  Button b = findViewById(R.id.button1);
  b.setOnClickListener(new View.OnClickListener(){

   @Override
   public void onClick(View v) {
    Log.d("traza", "llega");
   }
  });
 }
}

Añadir un nuevo Activity

Botón derecho sobre el paquete → new → Activity → Empty Activity

Esto crea una clase Activity con su método onCreate y su correspondiente referencia en el AndroidManifest.xml.

¿Para qué sirve un Intent?

Para invocar componentes (un Activity, código ejecutándose en segundo plano, et.)

Crear un botón en el primer activity para que cuando pulsemos sobre él vayamos al segundo

startActivity(new Intent(this, SecondActivity.class));

Activity que hace la llamada. Si sólo ponemos this, se pensará que estamos haciendo referencia a la clase OnClickListener, en lugar de a la clase Main

Hay que registrar el Activity en el AndroidManifest.xml
<activity android:name=".AcercaDe" 
android:label="@string/app_name">
</activity>

Pasar información de una activity a otra

En el editor visual de layouts de Android, un componente Plain Text corresponde realmente a un EditText en el código fuente.

Main.java
public final static String TEXTO = "texto";

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
}

public void pasarInfo(View view) {
 final EditText et = findViewById(R.id.editText1);
 Intent intent = new Intent(this, SecondActivity.class);
 intent.putExtra(TEXTO, et.getText().toString());
 startActivity(intent);
}
SecondActivity.java
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.second);
 TextView tv = findViewById(R.id.textView1);
 tv.setText(getIntent().getExtras().getString(Main.TEXTO));
}

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.