在哪里重新创建活动?

时间:2012-07-30 13:29:15

标签: android android-activity preferenceactivity android-theme

我在我的应用上实现了两个简单的主题,您可以在SettingsActivityextending PreferenceActivity)中选择它们。

此时,当您更改主题时,它仅应用于新创建的活动,因为您调用设置的活动是活动堆栈中的旧活动。

我搜索了很多,我发现这非常有用:how to restart an activity

顺便说一句,我并不完全清楚WHERE放这个代码。使它工作的唯一方法是将其放在onRestart()方法

但这是对cpu,电池和用户体验的巨大浪费。

任何帮助?

2 个答案:

答案 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);