我在我的应用中实现了一个按钮,使用此代码清除所有共享偏好:
context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit();
现在问题是每当我使用按钮时,我都需要退出活动并重新打开它以查看结果。我试着用这个代码重新打开活动按钮来解决这个问题:
Intent reOpen = new Intent (Bifrost.this, Bifrost.class);
startActivity(reOpen);
我的想法似乎很聪明,直到我注意到如果我重新打开活动,我需要按两次后退按钮才能返回主要活动。所以我做了一些研究,发现了这段代码:
finish();
startActivity(getIntent());
现在工作正常,活动会刷新,然后我只需要单击后退按钮一次。但是有没有另一种刷新活动的方法而不会“闪烁”进出?如您所知,每次打开新活动时,它都会闪烁,因此应用程序会滞后一秒钟。有没有办法绕过这个来刷新活动?
答案 0 :(得分:28)
嗯,最好更新活动的内容,但如果它太复杂,你可以使用这种方法覆盖默认动画:
finish();
overridePendingTransition( 0, 0);
startActivity(getIntent());
overridePendingTransition( 0, 0);
答案 1 :(得分:1)
您可以将标记Intent.FLAG_ACTIVITY_NO_ANIMATION
(link)添加到reOpen
意图中,以消除所有动画。但正如另一个答案所述,更好地刷新你内部的数据Activity
。
答案 2 :(得分:0)
您是否有一些视图可能会根据共享偏好设置中的值更改其值/大小?如果是的话,创建一个方法来初始化视图并在onCreate()方法和onClick()方法中调用该方法。