Send data to a parent activity onBackPressed [duplicate]

微笑、不失礼 提交于 2019-12-10 23:54:56

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!