0

I have MainActivity and I´m using startActivityForResult in it to open another activity in which I´m working with some data in list. I can edit these data and delete too. After clicking on back button of my phone I want to send this edited list back to main activity. Where should I create that intent with that new list?Is there any method which I can override for that back button pressed?

Aditi Parikh
  • 1,522
  • 3
  • 13
  • 34
previ
  • 87
  • 1
  • 7
  • yes. Override onBackPressed() on your second activity and start an intent that goes to the main activity with extras. – kha Apr 25 '15 at 14:30
  • Yeah that is what i was looking for. I probably missed that when i was searching in override methods! Thank you! – previ Apr 25 '15 at 14:34

2 Answers2

3

In your MainActivity call the AnotherActivity using startActivityForResult() method:

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

If you need, in your AnotherActivity set the data which you want to return back to MainActivity.

Intent returnIntent = new Intent();
returnIntent.putExtra("mData", object);
setResult(RESULT_OK, returnIntent);
finish();

In MainActivity you have to Override/Implement the onActivityResult() method in this way:

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

    if (requestCode == 1) {
        if(resultCode == RESULT_OK){
            String result=data.getStringExtra("mData");
        }
        if (resultCode == RESULT_CANCELED) {
            // do something if there is no result
        }
    }
}

See more:

Community
  • 1
  • 1
antoniodvr
  • 1,259
  • 1
  • 14
  • 15
0

You can override onBackPressed and pass the data back to the original Activity. But in order to pass it like this, the list must implement Parcelable

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent();
    Bundle data = new Bundle();
    data.putParcelableArrayList("someKey", listThatImplementsParcelable);
    intent.putExtras(data);
    setResult(RESULT_OK, intent);
    finish();
}
Bojan Kseneman
  • 15,488
  • 2
  • 54
  • 59