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