viernes, 15 de noviembre de 2013

Comunicación entre Actividades EXPLICACION

1.      Crea un nuevo proyecto con nombre ComunicacionActividades.
2.      El Layout de la actividad inicial ha de ser similar al que se muestra abajo a la izquierda.
Creamos el primer layout donde pondremos un campo de texto y un botón para enviar el nombre introducido a la siguiente actividad.
3.      El Layout correspondiente a la segunda actividad.

4.      En esta actividad se podrán pulsar dos botones, de forma que se devuelva a la actividad principal elString “Aceptado” o “Rechazado”, según el botón pulsado. Al pulsar cualquier botón se regresará a la actividad anterior.
Una vez creado las vistas debemos crear e implementar en nuestro AndroidManifest una nueva subactividad, SubActividad.java.
En la cual crearemos unas variables globales en la principal como el campo de texto para después poder sacar los datos mediante getText.


ACTIVITY_MAIN
      
       public void llamarSubActividad(){
             EditText eText = (EditText) findViewById(R.id.editText1);
             Intent i = new Intent(this,SubActividad.class );
//Creo un intent para lanzar la subactividad
             i.putExtra("nombre", eText.getText().toString());
        startActivityForResult(i, OpcionElegida);
//lanzo la activida con startActivityForResult y le paso el código que tiene que devolver si todo ha ido bien
       }
      
        protected void onActivityResult(int requestCode,int resultCode, Intent pData)           
     {
              if (resultCode == Activity.RESULT_OK )
//Si resultCode es igual a ok
         {
                     final String dato = pData.getExtras().getString(SubActividad.estadoSub );
//Obtengo el string de la subactividad
             //Aquí se hara lo que se desee con el valor recuperado
             contenido.setText(dato);
//El valor recogido en dato es un string que será mostrado en el TextView de la actividad principal
         }
                    
     }

}





SUBACTIVITY_MAIN

public static final String estadoSub = "";
       public static boolean resultado = false;

       @Override
       protected void onCreate(Bundle savedInstanceState) {

             super.onCreate(savedInstanceState);

             /**Creamos los objetos para despues poder sacar el texto o el resultado.
setContentView(R.layout.nombre);
             TextView tView = (TextView) findViewById(R.id.tvNombre);

             Bundle extras = getIntent().getExtras();
             tView.setText(extras.getString("nombre"));

             Button baceptar = (Button) findViewById(R.id.aceptar);
             Button bdenegar = (Button) findViewById(R.id.denegar);

            
//Añadimos un listener a cada boton cambiando la variable RESULTADO en cada momento
bdenegar.setOnClickListener(new OnClickListener() {
                    public void onClick(View view) {
                           resultado = false;
                           llamarActividad1();
                    }
             });
            
             baceptar.setOnClickListener(new OnClickListener() {
                    public void onClick(View view) {
                           resultado = true;
                           llamarActividad1();
                    }
             });
       }

       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
             // Inflate the menu; this adds items to the action bar if it is present.
             getMenuInflater().inflate(R.menu.main, menu);
             return true;
       }

       //Dependiendo de resultado añadimos un cantenido u otro a estadoSub.
       public void llamarActividad1() {
             Intent dato = new Intent();
             if (resultado == true) {
                    dato.putExtra(estadoSub, "Aceptadas");
             } else {
                    dato.putExtra(estadoSub, "Denegadas");

             }
             setResult(android.app.Activity.RESULT_OK, dato);
             finish();
       }

}
5.      En la actividad principal se modificará el texto del último TextView para que ponga “Resultado: Aceptado” o “Resultado:Rechazado”, según lo recibido.

Aquí tenemos el resultado de pulsar un botón u otro en la segunda actividad.




No hay comentarios:

Publicar un comentario