2012-05-14 12 views
8

Estoy comenzando una actividad infantil al hacer clic en un botón de Parent. Y estoy calculando algún resultado (de tipo cadena) en la actividad infantil y terminando al niño para regresar a Parent. ¿Hay alguna forma mejor de obtener ese resultado en Parent usando intents o extras? (Puedo obtener ese resultado en Parent haciendo que la variable de resultado sea pública & static en Child) Por favor, ayúdenme. Soy un novato en el desarrollo de Android.¿Cómo recuperar el resultado de la actividad de Child to Parent en android?

startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT); 

¿Qué debo escribir en onActivityResult() of Parent?

Respuesta

27

En lugar de startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

Puede utilizar el método putExtras() para pasar valores entre las actividades:

en la actividad infantil:

Intent data = new Intent(); 
data.putExtra("myData1", "Data 1 value"); 
data.putExtra("myData2", "Data 2 value"); 
// Activity finished ok, return the data 
setResult(RESULT_OK, data); 
finish(); 

Y en la actividad de los padres, puede anular onActivityResult() y dentro de eso puede tener el parámetro Intent y desde el parámetro Intent de este método puede recuperar los valores extra pasados ​​desde la actividad secundaria, como intent.getStringExtra o intent.getSerializableExtra.

por ejemplo:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { 
     if (data.hasExtra("myData1")) { 
      Toast.makeText(this, data.getExtras().getString("myData1"), 
       Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

¿Cómo devuelvo el resultado de hijo a padre? Su respuesta funciona bien si quiero pasar valores de Padre a hijo. Pero necesito terminar mi actividad infantil después de calcular el resultado en el niño y devolver el resultado al padre. – SANDHYA

+0

@SANDHYA, compruebe el código actualizado. Tienes que usar el método setResult() para pasar datos de un niño a un padre. –

+1

Excelente. Muchas gracias – SANDHYA

3

En la Actividad de Padres

Intent intent = new Intent(getApplicationContext(), yourChildActivity.class); 
intent.putExtra("key", "value"); 
startActivityForResult(intent, ACTIVITY_CONSTANT); 

en la actividad del niño a enviados de vuelta resultado de la actividad de su padre a través

Intent data = new Intent(); 
data.putExtra("key1", "value1"); 
data.putExtra("key2", "value2"); 
// Activity finished return ok, return the data 
setResult(RESULT_OK, data); 
finish(); 

y obtener información del resultado de la actividad infantil en su actividad principal

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { 
     if (data.hasExtra("key1") && data.hasExtra("key2")) { 
      Toast.makeText(
       this, 
       "Your reult is : "data.getExtras().getString("key1") + " " + data.getExtras().getString("key2"), 
       Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
Cuestiones relacionadas