将数据发送到onBackPressed上的父活动

时间:2013-08-26 07:12:58

标签: android android-activity android-lifecycle

有没有办法在按下后退时将更新的数据发送到父活动?我想更新捆绑包中的数据,但我不知道如何访问它。

例如,我有一个用于打开图像查看器的图库活动。假设用户滚动了十几个图像,然后退回到图库。使用他们查看的最后一张图像更新图库中的焦点图像是理想的。

目前,如果没有全球化的设置,我无法想到如何做到这一点。

这是我想做的伪代码(虽然这显然不起作用):

子:

@Override
public void onBackPressed() {
    getIntent().setData(currentImage);  // Not the right intent, obviously
    super.onBackPressed();
}

父:

@Override
public void onResume()
{
    super.onResume();
    Uri photoFocus = getIntent().getData();
    if (photoFocus != null)
        setPhotoFocus(photoFocus);
}

5 个答案:

答案 0 :(得分:9)

你可以做到

  

startActivityForResult()

启动子活动时,从您的父活动

。 onBackPressed,您可以在childActivity中调用setResult()。

在parentActivity中,代码将进行回调:

  

protected void onActivityResult(int requestCode,int resultCode,   意图数据){}

您可以在setResult方法中提取结果集

OR

使用sharedPreferences

答案 1 :(得分:1)

创建公共课程:

public class Values {

    public static Uri uri = null;

}

儿童:

@Override
public void onBackPressed() {
    //Set Values.uri here
    super.onBackPressed();
}

<强>父:

@Override
public void onResume()
{
    super.onResume();
    //Get Value.uri here and assign
}

答案 2 :(得分:0)

您应该尝试onSaveInstanceState而不是onBackPressed

onSaveInstanceState可以访问该捆绑包。

答案 3 :(得分:0)

您还可以将数据对象保留为参考点(静态均匀)并在onBackPressed()方法中更新它,并在父Activity中,您可以在onResume()/ onRestart()方法上获取该数据。它在某种程度上是绕过利用活动生命周期传递数据的机制的一般概念。

答案 4 :(得分:0)

您还可以使用共享首选项来存储数据,然后在父活动中获取它,请参阅共享首选项How to use SharedPreferences in Android to store, fetch and edit values上的这篇文章