4

当用户单击我的应用程序中的按钮时,它将更改正在处理的文档中的一些数据,此时我希望活动重建其 UI。如果可能的话,我想这样做,因为对于任何给定的更改,究竟需要更新哪些视图将很难提前知道。

我尝试获取intent, 调用finish()活动,然后StartActivity以相同的意图调用。使用这种方法,我可以禁用所有待处理的转换,所以它很好,除了它创建了一个新的活动实例,它的状态无法恢复(除非我做了一些非常愚蠢的事情,比如将它保存到首选项)。这是不可接受的,因为该活动包含一个ViewPager,每当我更新某些内容时,它使用此方法返回到第 0 页。

接下来我尝试使用Activity.Recreate(). 这解决了围绕状态未保存的问题,因为它似乎是活动的同一实例。但在这种情况下,我无法弄清楚如何禁用所有动画,所以屏幕上总是有一个闪光。

有没有办法让an activity.recreate()用户看起来无缝通话?或者,还有更好的方法?由于这一切都在viewpager中,因此刷新片段也可以正常工作,但这不是片段类本身发生的,而是许多对象都提供了 UI 的一部分。

4

1 回答 1

2

我遇到了类似的问题,当我调用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

我知道我回答你的问题为时已晚,但我希望它能帮助其他面临同样问题的开发人员。

于 2016-11-20T17:21:48.730 回答