问题
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);
}
回答1:
you can do
startActivityForResult()
from your parent activity when you start childactivity. onBackPressed, you can call setResult() in your childActivity.
In parentActivity the code will come to callback :
protected void onActivityResult(int requestCode, int resultCode, Intent data) { }
where you can extract the result set in setResult method
OR
use sharedPreferences
回答2:
Creating a public class:
public class Values {
public static Uri uri = null;
}
Child:
@Override
public void onBackPressed() {
//Set Values.uri here
super.onBackPressed();
}
Parent:
@Override
public void onResume()
{
super.onResume();
//Get Value.uri here and assign
}
回答3:
You should try onSaveInstanceState
instead of onBackPressed
.
onSaveInstanceState
gives access to the bundle.
回答4:
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.
回答5:
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
来源:https://stackoverflow.com/questions/18438572/send-data-to-a-parent-activity-onbackpressed