android - 刷新以 startActivityForResult 开始的活动
问题描述
我有一个包含几个活动的应用程序,每个活动包含几个片段。后台有一个同步服务,导致活动刷新
Intent refreshIntent = getIntent();
refreshIntent.putExtra("message", Globals.MSG_DATA_UPDATE);
finish();
startActivity(refreshIntent);
因为这是在数据集发生变化时一次刷新所有底层片段的最简单方法。如果活动最终返回到调用者,我使用额外来确定必须设置哪个结果。
问题在于这种刷新以保留 requestCode 的方式破坏了 startActivityForResult() 和 onActivityResult(),但 resultCode 和 Intent 始终为空(我尝试了为“onActivityResult:Intent 始终为空”提出的所有变体在这里)
一种可能但非常不切实际的解决方案是刷新所有片段(我在这里使用片段寻呼机)而不是活动,但如果这是可以避免的,那将容易得多,特别是因为片段和寻呼机适应数据在 onCreate() 中,我将不得不取消所有内容并重新运行该代码。
我需要将意图返回给调用活动,因为当数据集发生更改时这些也需要刷新,唯一的方法是使用 Intent extra 或 resultCode。那么有没有可能在不破坏结果返回的情况下刷新活动?
解决方案
我自己得到了答案。
Recreate()
这做了很多事情,而不是完成() - 建议用于刷新的 startActivity 命令:
- 它不会破坏 startActivityForResult() 的链接
- 它的反应就像屏幕旋转后重绘一样,因此您可以将信息保存到savedInstanceState中,无论如何您都必须实现
推荐阅读
- android - 如何在kotlin中定义一个只有一个带有body的构造函数的类?
- javascript - 根据 React.JS 中的对象数组动态渲染部分/div
- javascript - 是否可以从网络获取 javascript 数据到应用程序
- salesforce - 无法将自定义属性发布到 LEAD 字段
- eslint - 如何修复 nuxtjs 中的更漂亮/更漂亮的错误
- r - 如何在 R 中分别应用于具有相同操作的多个列?
- c - 在不存储输入的情况下查找出现频率,最小值最大值
- ssl - 如何清除 opencart 3.0.2.0 版本上的 https 和 httpss 错误
- android - 如何覆盖 Firebase 存储上同名的图像?
- python - Python pip install:错误:包目录'b'不存在