Send data to a parent activity onBackPressed [dupl

2019-07-19 07:25发布

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);
}

5条回答
Evening l夕情丶
2楼-- · 2019-07-19 08:12

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楼-- · 2019-07-19 08:17

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.

查看更多
来,给爷笑一个
4楼-- · 2019-07-19 08:22

You should try onSaveInstanceState instead of onBackPressed.

onSaveInstanceState gives access to the bundle.

查看更多
霸刀☆藐视天下
5楼-- · 2019-07-19 08:24

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

查看更多
做自己的国王
6楼-- · 2019-07-19 08:25

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

查看更多
登录 后发表回答