1 回答
TA贡献1845条经验 获得超8个赞
将数据传递给另一个 Activity 并返回:
... your code
@Override
public void onActivityResult(int reqCode, int resCode, Intent data) {
if(reqCode == REQ_TAKE_PICTURE) {
String uriExtra = data.getStringExtra(TakePictureActivity.RESULT_IMAGE_URI);
int positionExtra = data.getIntExtra("PhotoParentPosition")
updateImageItem(Uri.parse(uriExtra), positionExtra)
}
}
... your code
private void startTakePhoto(int position) {
// saving state which is better to avoid
tempItemPosition = position;
Intent intent = new Intent(this, TakePhotoActivity.class);
intent.putExtra("PhotoParentPosition", position);
startActivityForResult(intent, REQ_TAKE_PICTURE);
}
在您的其他活动 (TakePhotoActivity) 中,您从创建 Intent 中获得额外的 ("PhotoParentPosition") 并将其放在结果 Intent 上。
另一种选择是使用 AndroidX ViewModel 并在两个活动之间使用共享的 ViewModel。
ViewModel 的想法是它是一个数据类,可以保存有关您的视图的数据(例如选择列表项位置),该数据可以跨活动和跨配置更改保存。
Architecture Components 为负责为 UI 准备数据的 UI 控制器提供 ViewModel 辅助类。ViewModel 对象在配置更改期间自动保留,以便它们保存的数据可立即用于下一个活动或片段实例。例如,如果您需要在您的应用程序中显示用户列表,请确保将获取和保存用户列表的责任分配给 ViewModel,而不是活动或片段,如以下示例代码所示:
添加回答
举报