我在我的应用程序中实现了一个按钮,它使用以下代码清除所有共享首选项:
context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit();现在的问题是,每当我使用按钮时,我就需要退出活动并重新打开它才能看到结果。我试着用下面的代码简单地让按钮重新打开活动来解决这个问题:
Intent reOpen = new Intent (Bifrost.this, Bifrost.class);
startActivity(reOpen);我的想法看起来很聪明,直到我注意到如果我重新打开activity,我需要按两次back按钮才能返回到main activity。所以我做了一些研究,找到了下面的代码:
finish();
startActivity(getIntent());现在可以正常工作了,活动被刷新,然后我只需要单击back按钮一次。但是,有没有其他方法可以刷新活动而不“闪烁”?正如你所知道的,每次你打开一个新的活动,它都会闪烁,所以应用程序会有一秒钟的延迟。有没有一种方法可以绕过这个来刷新活动?
发布于 2013-07-05 20:25:27
当然,最好是更新活动的内容,但是如果太复杂了,可以用下面的方法覆盖默认动画:
finish();
overridePendingTransition( 0, 0);
startActivity(getIntent());
overridePendingTransition( 0, 0);发布于 2013-07-05 20:27:59
可以将标志Intent.FLAG_ACTIVITY_NO_ANIMATION (link)添加到reOpen意图以消除所有动画。但正如另一个答案所述,最好刷新Activity中的数据。
发布于 2013-07-05 20:25:06
您是否有一些视图可以根据您共享的首选项中的值更改其值/大小?如果是,则创建一个初始化视图的方法,并在onCreate()方法和onClick()方法中调用该方法。
https://stackoverflow.com/questions/17488766
复制相似问题