This question already has an answer here:
Is there a way to send updated data to a parent activity when back is pressed? I'd like to update the data in the bundle, but I don't see how I would access it.
For example, I have a gallery activity that opens an image viewer. Say a user scrolls through a dozen images and then backs out to the gallery. It would be ideal to update the focal image in the gallery with the last image they viewed.
At the moment I can't think of how to do so without a global setting.
Here's pseudo code of what I'd like to do (although this obviously wouldn't work):
Child:
@Override
public void onBackPressed() {
getIntent().setData(currentImage); // Not the right intent, obviously
super.onBackPressed();
}
Parent:
@Override
public void onResume()
{
super.onResume();
Uri photoFocus = getIntent().getData();
if (photoFocus != null)
setPhotoFocus(photoFocus);
}
Creating a public class:
Child:
Parent:
You could also keep the data object as a reference point (static even) and update it in the onBackPressed() method, and in the parent Activity you can fetch that data on the onResume() / onRestart() methods. it's somehow a general concept of bypassing the mechanics of passing data with intents utilizing the lifecycle of activities.
You should try
onSaveInstanceState
instead ofonBackPressed
.onSaveInstanceState
gives access to the bundle.you can do
from your parent activity when you start childactivity. onBackPressed, you can call setResult() in your childActivity.
In parentActivity the code will come to callback :
where you can extract the result set in setResult method
OR
use sharedPreferences
You can also use shared preference to store the data and then fetch it in the parent activity , refer to this post on shared preference How to use SharedPreferences in Android to store, fetch and edit values