25

我在我的应用程序中实现了一个按钮,使用以下代码清除所有共享首选项:

context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit();

现在的问题是,每当我使用按钮时,我都需要退出活动并重新打开它以查看结果。我尝试通过简单地使用以下代码使按钮重新打开活动来解决此问题:

Intent reOpen = new Intent (Bifrost.this, Bifrost.class);
startActivity(reOpen);

我的想法似乎很聪明,直到我注意到如果我重新打开活动,我需要按两次后退按钮才能回到主要活动。所以我做了一些研究,发现了这段代码:

finish();
startActivity(getIntent());

这现在工作正常,活动被刷新,然后我只需要单击一次后退按钮。但是,是否有另一种方法可以在不“闪烁”进出的情况下刷新活动?如您所知,每次您打开一个新活动时,它都会闪烁,因此应用程序会滞后一秒钟。有没有办法绕过这个来刷新活动?

4

3 回答 3

42

好吧,更新活动的内容会更好,但是如果太复杂,您可以使用此方法覆盖默认动画:

finish();
overridePendingTransition( 0, 0);
startActivity(getIntent());
overridePendingTransition( 0, 0);
于 2013-07-05T12:25:27.273 回答
1

您可以将标志Intent.FLAG_ACTIVITY_NO_ANIMATION链接)添加到您的reOpen意图中以消除所有动画。但正如其他答案所述,最好刷新您内部的数据Activity

于 2013-07-05T12:27:58.737 回答
0

您是否有一些观点可能会根据您共同偏好的价值改变其价值/规模?如果是,则创建一个方法来初始化视图并在 onCreate() 方法和 onClick() 方法中调用该方法。

于 2013-07-05T12:25:05.737 回答