lunes, 21 de noviembre de 2016

Insertar componentes en la interfaz, escuchar eventos, cambio de ventana(activity), interfaz polimórfica

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.


@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.




Es importante tener habilitado el modo de desarrollador.


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 Activity
ya vimos los pasos que siguen.



Agrego un boton y le llamo btnReceptor


Volvemos al primer código Java

MainActivity.java

agregamos 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 elementos


    public 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 listener

case R.id.button:
cambiar(v);
        break;
Debería funcionar.

Cambiamos el texto del botón del segundo activity.

Lo hacemos desde la propiedad android:text
queda 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.
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.



Aquí el proyecto:
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.