2010-09-10 7 views
4

J'ai deux activités, activité 1 et activité 2 par exemple. L'activité 1 appellera l'activité 2 et enverra une liste qui sera ensuite modifiée. C'est ce que j'ai déjà fait en utilisant une intention. Ce que je veux maintenant faire, c'est quand l'activité 2 appelle finish() Je veux que l'arraylist modifié soit renvoyé à l'activité 1 pour qu'il ait la version la plus récente de cet arraylist.Renvoyer un arraylist à partir d'une activité dans android

Activité 1:

Bundle b = new Bundle(); 
b.putParcelableArrayList("com.Woody.RingerSchedule", schedules); 
Intent i = new Intent(this, addSchedule.class); 
i.putExtras(b); 
startActivity(i); 

Activité 2 jusqu'à présent:

Bundle b = getIntent().getExtras(); 
final ArrayList<Schedule> schedules = b.getParcelableArrayList("com.Woody.RingerSchedule"); 
//modify arraylist 
//need code here to return arraylist to activity 1 
finish(); 

Toute aide appréciée.

Répondre

4

Vous devez appeler setResult avec le Intent param

Intent intent = new Intent(); 
intent.putExtra("returnKey","test"); 
setResult(RESULT_OK,intent); 
finish(); 

Vous lisez de l'activité qui a commencé l'activité avec startActivityForResult

//we need a handler for when the secondary activity finishes it's work 
//and returns control to this activity... 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent){ 
    super.onActivityResult(requestCode, resultCode, intent); 
    Bundle extras = intent.getExtras(); 
    mEditText1.setText(extras != null ? extras.getString("returnKey"):"nothing returned"); 
} 

Voir ce pour plus d'exemple: http://www.remwebdevelopment.com/dev/a33/Passing-Bundles-Around-Activities.html

+0

Oui mais pour définir le résultat que vous voulez, puisqu'il s'agit d'un tableau, sur l'activité commencée devrait utiliser "putParcelableArrayListExtr une "fonction au lieu de" putExtra ". Et pour l'activité qui obtient le résultat devrait utiliser "getParcelableArrayExtra" à la place. – Denr2

Questions connexes