gpt4 book ai didi

java - 在不丢失父 Activity 的情况下打开新 Activity

转载 作者:可可西里 更新时间:2023-11-01 11:40:39 26 4
gpt4 key购买 nike

我有一个 DetailsActivity,它列出了几个图像的缩略图。我想通过将 URL 作为字符串传递到“FullScreenActivity”来打开一个新 Activity ,以允许用户查看较大版本的图像。

DetailsActivity 包含我不想在用户打开全屏 View 时丢失的复杂数据对象。

我可以将字符串传递给新的“FullScreenActivity”,图像下载,我可以捏/缩放图像等。但是当我点击 UP按钮返回到 DetailsAcitivity,应用程序崩溃,因为复杂的数据对象消失了。

如何在用户查看更大的图像时保持 DetailsActivity 存在?

这是我调用 FullScreenActivity 的方式。这在创建新 ImageView 并将其添加到 Activity 的 for 循环中调用。

image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(DetailsActivity.this, ViewFullPhotoActivity.class);
intent.putExtra("FullScreenPicture", (String) finalImageMap.get("MainImage"));
startActivity(intent);
}
});

在我的 FullScreenActivity 中,我通过以下方式获取 URL 字符串

String fullScreenImage = (String) getIntent().getCharSequenceExtra("FullScreenPicture");

我考虑过打包复杂数据对象并将其与新 Intent 一起发送的想法,但这肯定不是最佳做法。如果我走那条路,还有其他一些对用户不利的事情,特别是重新下载所有缩略图,或者丢失输入到表单中的数据。

最佳答案

我建议覆盖 onSaveInstanceState(),将您的数据保存在 onCreate() 中并从 savedInstanceState 中获取您保存的数据。查看documentation了解更多。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
// Save your data here with savedInstanceState.put<something>...
}

如果你的数据很复杂(不是字符串或整数或一些简单的类型),你可以编写一个方法将它保存到 Bundle(什么可以放在 savedInstanceState bundle),另一个解析包并从中恢复数据)。但像这样存储图像不是一个好主意......你可以将它们缓存在 sdcard 上(例如,在你的应用程序的数据目录中,而不是在内存中)。


另一个选项在全屏对话框中显示“FullScreenActivity”的内容而不是 Activity ,因此 DetailsActivity 不会在后台销毁。

关于java - 在不丢失父 Activity 的情况下打开新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36264090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com