PDA

Ver la Versión Completa : [ CONSULTA ] onActivityResult


Red_Wolf
22/05/14, 22:59:31
Tengo una duda y no se como solucionarla :loco:

Tengo una actividad que contiene dos variables tipo String, una para almacenar un nombre masculino y otra para uno femenino.
En esta actividad, la idea es tener dos funciones, una que llame mediante startactvityforresult() una actividad destinada a recoger el nombre masculino y una vez cerrada esta actividad, utilizaría otra función para abrir una nueva actividad similar para almacenar el valor femenino.
El caso es que a la hora de definir la función para recoger el valor mediante onactivityresult(), no me deja definirlo dentro de las funciones que iniciarían el startactvityforresult(),ya que me da error, obligándome a hacerlo fuera, con lo que por lo que creo, tan solo me permitiría recoger un resultado de alguna d las actividades.
Cómo podría solucionar esto? Os dejo parte del código. Gracias.

private static final int MALENAME = 0;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_couple_game);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}

introMaleName();
introFemaleName();
}

private void introMaleName() {
Intent i = new Intent(this, ActivityMaleName.class);
startActivityForResult(i, MALENAME);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Resultado cancelado", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_OK) {
STR_MaleName = data.getExtras().getString("MaleName");
}
}

kriogeN
22/05/14, 23:31:35
No se que significa esto: no me deja definirlo dentro de las funciones que iniciarían el startActvityForResult()

De todas formas, y con lo poco que he entendido, lo ideal es llamar primero a startActivityForResult para el nombre masculino, después en el onActivityResult recoger el nombre masculino y ahí iniciar el nuevo startActivityForResult para el femenino, y una vez recogido en el onActivityResult otra vez rellenar la ventana.

Red_Wolf
27/05/14, 23:31:44
Me refería a si intentara hacer algo tal que así:

private void introMaleName() {
Intent i = new Intent(this, ActivityMaleName.class);
startActivityForResult(i, MALENAME);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Resultado cancelado", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_OK) {
STR_MaleName = data.getExtras().getString("MaleName");
}
}
}



private void introFealeName() {
Intent i = new Intent(this, ActivityFemaleName.class);
startActivityForResult(i, FEMALENAME);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Resultado cancelado", Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_OK) {
STR_FemaleName = data.getExtras().getString("FemaleName");
}
}
}

No me deja hacerlo, me da error.
Te refieres a iniciar con startactivityforresult dentro del onactivityresult? Muchas gracias.

kriogeN
27/05/14, 23:54:23
No puedes hacerlo en primer lugar porque no puedes definir un método dentro de otro método, los métodos sólo se pueden definir dentro de clases o implementaciones de clases. Y en segundo lugar el onActivityResult sólo tiene sentido dentro de un Activity o un Fragment, ya que será el que lo llame cuando vuelva el control a esa ventana, y sólo puede haber uno dentro de cada clase.

Si, me refiero a llamar a un startActivityForResult dentro de el onActivityResult.

Red_Wolf
28/05/14, 21:15:00
No es la solución que busco ya que la idea es poder crear dos actividades una para introducir un nombre masculino y otra para introducir un nombre femenino que se puedan llamar de forma independiente ya que no necesariamente se necesitará introducir un nombre de cada sexo, sino que quizá llamaríamos a dos hombres, a dos mujeres, etc. Con lo que, lo ideal sería crear una actividad para cada sexo a las que podemos llamar desde otra actividad y que nos permita recoger el nombre introducido e iniciarlas las veces que sean necesarias.
La idea seria algo así:
Inicio actividad principal -> Llamo al método que me permite abrir la actividad de introducir un nombre masculino, recoge la información y la cierra -> Llamo al método que me permite abrir la actividad de introducir un nombre femenino, recoge la información y la cierra -> Llamo las veces que haga falta a cualquiera de las dos actividades para recoger los nombres que quiera -> Tengo todos los nombres en variables String de la actividad principal.

Ya se que mareo un poco, pero es que no se como hacerlo. Muchísimas gracias :)