PDA

Ver la Versión Completa : [ CONSULTA ] recuperar nombre ingresado en otra activity


nornak
09/08/12, 04:25:29
buenas
estoy mas menos recien empezando a programar para android. Estoy intentado hace una aplicacion y no puedo hacer que al empezar una activity, para pedir un nombre al usuario y que al presionar en un boton "agregar", pueda desde la activite que la llamo, lograr obtener ese nombre ingresado.
Buscando he llegado al metodo starActivityForResult(), por lo que entendi, es como para indicar cuando termine la activity se llama al metodo onActivityResult(), pero sigo sin saber como hacer para pasar el nombre ingresado de una activity a otra :(

truxky
09/08/12, 08:51:36
Buenos días.

Si lo que quieres es pasar parámetros de una actividad a otra, lo tienes que meter como parámetros del intent al que llamas la nueva actividad.

Este seria un ejemplo:

En la 1ª activity, cuando vas a llamar a la segunda actividad
------------------
String sCadena = "Hola";
Intent intent = new Intent();
intent.setClass(getApplicationContext(), SegundaActividad.class);
intent.putExtra("Nombre_parametro", sCadena);
startActivityForResult(intent, Codigo_Retorno);


En la 2ª activity, para recuperar el valor del parámetro
------------------
Intent intent = getIntent();
Bundle todosParametros = intent.getExtras();
String sParametroObtenido = "";
sParametroObtenido .setText(todosParametros.getString("Nombre_parametro"));

Espero que quede claro, y si tienes cualquier duda, pregunta y busca mucha información en Internet, que hay mucha créeme.

Un saludo.

Celtium
09/08/12, 12:08:09
Hola, que tal?

Quieres que una actividad llame a otra y esta ingrese unos datos de usuario y se cierre. (para eso hay dialog entre otras cosas, pero si vas a tener muchas de esas ventanas yo prefiero hacer una activity, me resulta mas ordenado que llenar las actividades de dialogs)

estas variables ponlas en las dos actividades:
int REGISTRO=1;
int REGISTRADO=10;
int SIN_DATOS=0;

La actividad principal llamara a la secundaria mas o menos así:

intent = new Intent(PrincipalActivity.this, SecundariaActivity.class);
intent.putExtra("opcion", REGISTRO);
startActivityForResult(intent, REGISTRO);

La secundaria recibe los datos en el oncreate:

Bundle reicieveParams = getIntent().getExtras();
final int opcion=reicieveParams.getInt("opcion");

tienes "opcion" que te dirá quien llamo a la actividad secundaria.

haces lo que tenga que hacer la secundaria obteniendo los datos de usuario y contraseña (por ejemplo)
String usuario= "pablo";
String contraseña = "123456"

después cuando termine de obtener esos datos tendrás que devolver los datos, para esto creamos un métodos que llamaremos returnToCaller.
Llama al método al final del proceso de obtención de datos con el resultado que sea:
returnToCaller(SIN_DATOS);
o
returnToCaller(REGISTRO);

El método sera algo así:

private void returnToCaller(int opcion){
Intent intent = new Intent();

if (opcion==SIN_DATOS){
setResult(SIN_DATOS,intent);
onDestroy();
} else
if (opcion==REGISTRADO){
intent.putExtra("usuario", usuario);
intent.putExtra("contraseña", contraseña );
setResult(REGISTRADO,intent);
onDestroy();
}

Este método cierra la actividad secundaria y...
manda los datos a la principal que los recibirá en el método:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode){

case SIN_DATOS:
if (resultCode == SIN_DATOS) {
...
}
break;

case REGISTRADO:
if (resultCode == REGISTRADO) {
Bundle reicieveParams = data.getExtras();
String usuario = reicieveParams.getString("usuario");
String contraseña = reicieveParams.getString("contraseña");
}
break;
default: break;
}
}

Haz pruebas mira los resultados que mandan y responden las actividades, esto se entiende haciéndolo, nada más. No probé este código míralo.

Para los datos de registro de usuario, contraseña, etc se puede hacer de otro modo. Son datos importantes que tienen que quedar mucho tiempo, no perderse al terminar la actividad etc, para eso hay las SharedPreferences.

public static final String PREFERENCIAS_USUARIO = "Su nombre"; //String
public static final String PREFERENCIAS_CONTRASENA = "contraseña"; //String

Mucho mejor.

Suerte ;)

nornak
10/08/12, 00:01:27
gracias por las respuestas
@truxky, lo que yo queria hacer era en el otro sentido, recuperar informacion de una activity, me enrede mucho en explicar XD

@Celtium:
esto es lo que queria hacer, ya lo he probado y me funciona :D

hace tiempo que tenia este problema y era re simple XD