我在我的应用上实现了两个简单的主题,您可以在SettingsActivity
(extending PreferenceActivity
)中选择它们。
此时,当您更改主题时,它仅应用于新创建的活动,因为您调用设置的活动是活动堆栈中的旧活动。
我搜索了很多,我发现这非常有用:how to restart an activity。
顺便说一句,我并不完全清楚WHERE放这个代码。使它工作的唯一方法是将其放在onRestart()
方法
但这是对cpu,电池和用户体验的巨大浪费。
任何帮助?
答案 0 :(得分:1)
我会为onPreferenceChanged注册一个监听器。在那里,您可以检查您的主题偏好是否是已更改的主题偏好。然后,您可以使用以下代码重新启动Activity。
Intent intent = getIntent();
finish();
startActivity(intent);
通过使用getIntent()获取意图,确保您的Activity将以完全相同的方式启动。
答案 1 :(得分:1)
在主题偏好设置上设置PreferenceChangedListener
。如果它被解雇,请将您的用户清除回应用程序的顶层。您可以重新启动当前活动,但如果您有多个活动,那么这会变得有点痛苦。更容易将应用程序重置为开头。
Intent i = new Intent(this, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.finish();
this.startActivity(i);