当用户单击我的应用程序中的按钮时,它将更改正在处理的文档中的一些数据,此时我希望活动重建其 UI。如果可能的话,我想这样做,因为对于任何给定的更改,确切需要更新哪些视图将很难提前知道。
我尝试获取intent、调用finish()该活动,然后StartActivity以相同的意图调用。使用此方法,我可以禁用所有待处理的转换,所以这很好,除非它创建了活动的新实例,其状态无法恢复(除非我做了一些非常愚蠢的事情,例如将其保存到首选项)。这是不可接受的,因为该活动包含一个ViewPager,每当我更新某些内容时,它都会使用此方法返回到第 0 页。
接下来我尝试使用Activity.Recreate(). 这解决了状态未保存的问题,因为它看起来是活动的同一实例。但在这种情况下,我无法弄清楚如何禁用所有动画,因此屏幕上总是闪烁。
有没有办法让an activity.recreate()用户觉得通话无缝?或者,还有更好的方法?由于这一切都在viewpager中,因此刷新片段也可以正常工作,但这不是从片段类本身发生的,而是在许多对象中发生的,每个对象都提供了 UI 的一部分。
我遇到了类似的问题,当我调用recreate活动时它正在闪烁,我最终使用了以下代码:
// uncomment below line for blink effect :P
// recreate();
// restart activity without blinking :-)
Intent intent = new Intent(MyActivity.this, MyActivity.class);
startActivity(intent); // start same activity
finish(); // destroy older activity
overridePendingTransition(0, 0); // this is important for seamless transition
Run Code Online (Sandbox Code Playgroud)
我知道我来不及回答你的问题,但我希望它能帮助其他面临同样问题的开发人员。
| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |