我为我的应用用户提供主题选项。但我发现旋转后主题将重置为默认主题。 这是我的代码:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
config = PreferenceManager.getDefaultSharedPreferences(this);
theme = config.getString("theme", "");
setActionBarTheme(theme);
setContentView(R.layout.main);
}
private void setActionBarTheme(String theme)
{
if(theme.equals("Holo Red"))
{
setTheme(R.style.onTime_Theme_Holo_Red);
}else
{
setTheme(R.style.onTime_Theme_Default);
}
}
此活动正在托管片段,当设备旋转时,片段仍然保留,但主题重置。
如果设备配置已更改,则应重新创建活动。是错误还是我错过了什么?
答案 0 :(得分:1)
正如@CBergson指出的那样,您可以保存主题并在重新创建Activity
时重新创建主题。
另一方面,您可以通过在 AndroidManifest.xml 中添加以下行来阻止Android销毁Activity
:
<activity android:name="YourActivity"
android:configChanges="orientation|screenSize" />
进一步阅读here。
答案 1 :(得分:0)
您应该在首选项中保存/更新当前主题,以使其不是默认值。当旋转发生时,活动生命周期将重复(停止 - 破坏 - 启动等...)。在下一个活动周期开始之前,您需要在周期完成之前保存它。