2012-05-14 15 views
8

Sto iniziando un'attività figlio al clic di un pulsante da Parent. E sto calcolando alcuni risultati (di tipo stringa) nell'attività del bambino e finendo il bambino per tornare in Parent. C'è un modo migliore per ottenere quel risultato in Genitori usando intenti o extra? (Posso ottenere quel risultato in Genitore rendendo la variabile risultato come pubblica & statica in Child) Please help me. Sono un principiante dello sviluppo di Android.Come recuperare il risultato dell'attività figlio su Genitore in Android?

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

Cosa devo scrivere suActivityResult() di Parent?

risposta

27

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

È possibile utilizzare putExtras() per passare i valori tra le attività:

nell'attività del bambino:

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(); 

e nell'attività Parent, è possibile ignorare onActivityResult() e all'interno di questo puoi avere il parametro Intent e dal parametro Intent di questo metodo puoi recuperare i valori extra passati dall'attività child, come intent.getStringExtra o intent.getSerializableExtra.

ad esempio:

@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

Come restituire il risultato da Figlio a padre? La tua risposta funziona bene se voglio passare valori da padre a figlio. Ma ho bisogno di finire l'attività del mio bambino dopo aver calcolato il risultato in figlio e restituire il risultato al genitore. – SANDHYA

+0

@SANDHYA controlla il codice aggiornato. Devi usare il metodo setResult() per passare i dati da child a parent. –

+1

Eccellente. Grazie mille – SANDHYA

3

In Parent Attività

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

nell'attività bambino ad rispedito risultato della vostra attività genitore attraverso

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

e ottenere bambino informazioni risultato attività l'attività dei genitori

@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(); 
     } 
    } 
} 
Problemi correlati