2013-03-10 8 views
6

Sto chiamando l'attivitàB dall'attivitàA e passando un oggetto di classe utilizzando l'intento.Android - Come inviare i dati all'attività di chiamata

Intent intentB = new Intent(v.getContext(), activityB.class); 
intentB.putExtra("data", data); //data is a class object 
startActivity(intentB); 

L'attivitàB si avvia e sono in grado di estrarre i dati. Nell'attività B, sto modificando l'oggetto dati. Voglio inviare questo oggetto dati modificato di nuovo all'attivitàA quando viene chiamata activityB.onDestroy().

Qualche consiglio?

Ecco il mio codice:

activityA, avviare il Intent:

Intent i = new Intent(this, activityB.class); 
i.putExtra("object", Class.object); 
startActivityForResult(i, 1); 

activityA, cattura l'intento:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) {  
     object = data.getParcelableExtra("object"); //the Class implements Parcelable 
    } 
} 

activityB

protected void onDestroy() { 
    Intent data = new Intent(); 
    setResult(RESULT_OK, data) 
    finish(); // ends current activity 
} 
+0

Onestamente penso che tu sia meglio avere solo un'interfaccia - è molto facile https://developer.android.com/ training/basics/fragments/communicating.html – Fattie

risposta

9

Utilizzate ActivityResult.

  1. Usa startActivityForResult(int, Intent)
  2. Per impostare le informazioni in attività B, utilizzare setResult(RESULT_OK, data) (in cui i dati è un Intent)
  3. Override onActivityResult(int, int, Intent) e prendere il data -Intent

Attività A, iniziando la Intent :

Intent i = new Intent(this, SecondActivity.class); 
startActivityForResult(i, 1); 

Attività A, cattura i dati:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == 1) {  
     // make use of "data" = profit 
    } 
} 

Attività B:

Intent data = new Intent(); 
setResult(RESULT_OK, data) 
finish(); // ends current activity 
+0

Dove dovrei impostare l'intento dei dati nell'attivitàB? Ho provato a impostarlo in 'activityB.onDestroy()', ma i dati Intent in 'activityA.onActivityResult()' sono nulli – anirus

+0

@anirus dovrebbe funzionare in 'onDestroy()'. – poitroae

+0

Ricevo ancora 'NullPointerException'. Questo è il mio codice – anirus

Problemi correlati