Insertar componentes en la interfaz, cambio de ventana(activity), interfaz polimórfica
Hoy veremos:
- Como agregar componentes y manipularlos
- Como cambiar de activities
- Como reducir el número de activities necesarios
En la parte de código básico:
- Sentencia if(Java)
- Sentencia switch(Java)
Agregamos una interfaz básica, o creamos un nuevo proyecto y la creamos.
Ya tenemos la interfaz gráfica básica.
Agregar componentes visuales
Esto es muy importante, ya que si agregamos demasiadas interfaces, o lo hacemos mal, nuestro proyecto sera demasiado pesado, o difícil de mantener.
Estamos en el código Java
Cambiamos al XML que es nuestra interfaz gráfica.
Presionamos en "design", y veremos un preview
Arrastramos un botón
Vemos que su Id es "button".
Ahora manipularemos su código...
Para eso vamos al código Java.
En las lineas de "import" agregamos:
import android.widget.Button;
Despues de crear la clase definimos un botón.
public class MainActivity extends AppCompatActivity { Button button;
Despues de que se haya creado la interfaz, importamos el boton del XML.
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)findViewById(R.id.button); }button es el boton en el Java.(Button) es el casteo, "castear", convertir un tipo a otro, en este caso estamos importando un objeto.findViewById encontrara el elemento que queremos, y R.id.id se lo entregara.R contiene los recursos que estamos usando.
Hora de mostrar que si lo importamos.
Es importante tener habilitado el modo de desarrollador.@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button)findViewById(R.id.button);//manipulamos el texto, esto nos servirá en lo que sigue, esto es un comentario button.setText("importado");}
Corremos nuestra aplicación, conectamos el celular o tablet.
El ADB debe mostrar el movil o el emulador.
Tomara un poco compilar el proyecto. Posteriormente les explicare como comprimir el
proyecto para enviarlo por Internet o subirlo a su disco en la nube.
Aqui una captura
Se ve oscuro por una máscara.
Cambio de ventana
Agregamos otro ACTIVITY:Clic derecho sobre app>new>Activity>Empty Activityya vimos los pasos que siguen.Agrego un boton y le llamo btnReceptor
Volvemos al primer código JavaMainActivity.javaagregamos a los imports:import android.view.View; import android.widget.Button;Vamos a escuchar el botón
Después del método onCreate agregamos un método para escuchar.
View.OnClickListener miEscuchaClick=new View.OnClickListener(){//La pantalla es táctil, o tiene entradas, la vista//servira para escuchar sus elementospublic void onClick(View v){//vemos que algo fue clickeado, presionado, y escuchamos la vista
switch (v.getId()){
//Tenemos la sentencia switch, que nos permite comparar los valores//De acuerdo a lo recibido por ella hara algo u otra acción //v es nuestra vista, Id es el identificador de un elemento, en este caso el que fue presionado case R.id.button: //si el botón fue presionado hara el código que sigue break; //aquí cerramos ese bloque del switch } } };Agregamos un método para cambiar de Activity:public void cambiar(View v){ Intent i=new Intent(this, receptor.class); startActivity(i); }Llamamos al método desde el listenercase R.id.button: cambiar(v); break;Debería funcionar.Cambiamos el texto del botón del segundo activity.Lo hacemos desde la propiedad android:textqueda entre comillas.<Button android:text="Cambiado"
Debería cambiar
Probamos la aplicación: la abrimos y presionamos el boton, debería cambiar de activity.
Ya probaron la aplicación. Vamos a mostrar que un botón puede cambiar de acción,
de acuerdo a un mensaje que le enviemos.
GUI polimórfica, envío de mensajes entre GUI
Vamos al XML de la primera ventana y agregamos otro botón:Vamos al java.Declaramos los dos botones.Aquí el proyecto:public class MainActivity extends AppCompatActivity { Button btnGuardar; Button btnEditar;Quitamos el primer botón, pero paso a paso, si no vamos a destruir el código.
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnGuardar=(Button)findViewById(R.id.guardar); btnEditar=(Button)findViewById(R.id.editar); btnGuardar.setOnClickListener(miEscuchaClick); btnEditar.setOnClickListener(miEscuchaClick); }Editamos el listener agregando los id's de los botones.
View.OnClickListener miEscuchaClick=new View.OnClickListener(){ public void onClick(View v){ switch (v.getId()){ // case R.id.button://cambiar(v);// break; case R.id.guardar: break; case R.id.editar: break; } } };Creamos una variable al principio de la clase que guardara el mensaje que pasaremos.
case R.id.guardar: funcion="guardar"; break; case R.id.editar: funcion="editar"; break;Usamos el metodo "putExtra", permite pasar variables a otros activities.
public void cambiar(View v, String mensaje){ Intent i=new Intent(this, receptor.class); i.putExtra("mensaje", mensaje); startActivity(i); }Agregamos la función cambiar a los listeners:
case R.id.guardar: funcion="guardar"; cambiar(v, funcion); break; case R.id.editar: funcion="editar"; cambiar(v, funcion); break;Vamos al la GUI receptora.
Recibimos el mensaje:
Importamos la clase boton, extraemos el mensaje y lo colocamos en una variable local.
Cambiamos el texto del mensaje por el mensaje recibido.
import android.widget.Button; public class receptor extends AppCompatActivity { public String funcion; Button btnFuncion; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_receptor); Bundle bundle=getIntent().getExtras(); funcion=bundle.getString("funcion"); btnFuncion=(Button)findViewById(R.id.btnReceptor); btnFuncion.setText(funcion); }Agregamos un listener para los clicks:
View.OnClickListener miEscuchaClick=new View.OnClickListener(){ public void onClick(View v){ switch (v.getId()){ case R.id.btnReceptor: switch(funcion){ case "guardar": btnFuncion.setText("Presionaste guardar"); break; case "editar": btnFuncion.setText("Presionaste editar"); break; } break; // //otro botón // funcion="editar"; //cambiar(v, funcion); //break; } } };Vemos un switch anidado que hara una u otra opción, de acuerdo al mensaje enviado.
Llamamos al listener desde el boton en el método onCreate.
btnFuncion.setOnClickListener(miEscuchaClick);Ya debería funcionar. Aquí terminamos esta sección. Muchas gracias por tu visita, dona o comparte.
https://drive.google.com/file/d/0B0zrGMhduaXIcU1nVmJkeGNXVTQ/view?usp=sharing
No hay comentarios.:
Publicar un comentario
Por favor:
Se decente, recuerda que las personas vienen por ayuda y por código bueno y útil.
No seas grosero.
Especifica bien tu problema, para un diagnóstico adecuado, tanto medicina y programación requieren los síntomas.