繁体   English   中英

刷新以startActivityForResult开始的活动

[英]Refreshing an activity started with startActivityForResult

我有一个包含几个活动的应用程序,每个活动包含几个片段。 后台有一个同步服务,可导致活动刷新

Intent refreshIntent = getIntent();
refreshIntent.putExtra("message", Globals.MSG_DATA_UPDATE);
finish();
startActivity(refreshIntent);

因为这是在数据集更改后立即刷新所有基础片段的最简单方法。 如果活动最终返回到调用方,我将使用附加项来确定必须设置哪个结果。

问题在于,这种刷新以保留requestCode的方式破坏了startActivityForResult()和onActivityResult(),但是resultCode和Intent始终为null(我尝试了为“ onActivityResult:Intent始终为null”提议的所有变体。 )

一种可能但非常不切实际的解决方案是刷新所有片段(我在这里使用片段分页器)而不是活动,但是如果可以避免的话,这会容易得多,尤其是因为片段和分页器适应数据在onCreate()中,我将不得不取消所有内容并重新运行该代码。

我需要将Intent返回到调用活动,因为当数据集更改并且唯一的方法是使用Intent extra或resultCode时,它们也需要刷新。 那么有可能刷新活动而不破坏结果的返回吗?

我自己得到了答案。

Recreate()

这可以做很多事情,而不是finish()-建议刷新的startActivity命令:

  • 它不会中断到startActivityForResult()的链接
  • 屏幕旋转后它的反应就像重绘一样,因此您可以将信息保存到saveInstanceState中 ,无论如何您都必须实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM