gpt4 book ai didi

Android - 如何在运行时切换主题

转载 作者:行者123 更新时间:2023-11-29 14:50:36 28 4
gpt4 key购买 nike

有人能告诉我如何在运行时在我的应用程序中将主题从 holo 切换到 holo light 吗?我想在设置中有两个按钮来选择浅色或黑色主题。如何在整个应用程序范围内设置它而不仅仅是为 Activity 设置?

我已经用 setTheme() 尝试了一些东西,但是当我点击一个按钮时我无法改变主题。

这是我的设置 Activity ,我想在其中设置主题:

public class SettingsActivity extends Activity  {

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {


setTheme(android.R.style.Theme_Holo_Light);

super.onCreate(savedInstanceState);

setContentView(R.layout.settings);

}

这很有效,我的主题也已设置,但正如我所说,我想通过按一个按钮在系统范围内更改它。

谢谢!

最佳答案

如您所见,主题是在 onCreate()setContentView() 之前设置的。所以当你想改变主题时,你应该再次调用oncreate()方法。但是 onCreate() 函数在 Activity 的生命周期中只会被调用一次。

有一种简单的方法可以做到这一点。我不确定这是最好的方法。

假设您想要在单击按钮时将新主题应用到 Activity 1

在 onClick 事件中

  1. 保存要应用的主题,即使在应用程序重新启动后它也应该保留(可以使用首选项或静态可变变量)。
  2. 完成当前 Activity ( Activity 1)并调用新 Activity ( Activity 2)。

现在在 Activity 2

  1. 调用 Activity 1 并完成当前 Activity ( Activity 2)。

Activity 1

  1. onCreate 中应用保存的主题。

希望不会造成混淆.. :)

关于Android - 如何在运行时切换主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19409398/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com