3

我在我的应用程序中实现了两个简单的主题,您可以在SettingsActivity( extending PreferenceActivity) 中选择它们。

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

我进行了很多搜索,发现这非常有用:如何重新启动活动

顺便说一句,我并不完全清楚该代码的放置位置。使它起作用的唯一方法是将其放入onRestart()方法中,

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

有什么帮助吗?

4

2 回答 2

1

我会为 onPreferenceChanged 注册一个监听器。在那里,您可以检查您的主题偏好是否是已更改的主题。然后,您可以使用以下代码重新启动您的活动。

Intent intent = getIntent();
finish();
startActivity(intent);

通过使用 getIntent() 获取意图,您可以确保您的 Activity 将以完全相同的方式启动。

于 2012-07-30T13:43:53.587 回答
1

PreferenceChangedListener在主题偏好上设置一个。如果它被解雇,请将您的用户清除回应用程序的顶层。你可以重新开始当前的活动,但如果你有几个活动很深,那么这会变得有点痛苦。更容易将应用程序重置回开始。

        Intent i = new Intent(this, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        this.finish();
        this.startActivity(i);
于 2012-07-30T13:45:59.017 回答