如何在上一个活动中重新创建按钮?

时间:2019-10-24 15:34:58

标签: java android recreate

我对Android Studio中的代码有疑问。

我有ActivityAActivityB

ActivityA中,我有一些按钮。 ActivityB与设置有关。例如,我可以选择应用程序的主题。全部使用SharedPreferences完成。

如果我使用以下代码将主题更改为DARK:

Button Settings = (Button) findViewById(R.id.settings);
Settings.setTextColor(Color.BLACK);     
Settings.setBackgroundResource(R.drawable.shapestylethis3);

然后我按回去o ActivityA-然后更改按钮。

现在,当我进入ActivityB并想换回主题LIGHT时,我想找回ActivityA上的默认按钮:

style="@android:style/Widget.Button.Small"

但是我不知道该怎么实现。 ActivityB在单击“保存”按钮后立即发生了变化,因为除了保存为SharedPreferences外,我还在recreate();中使用了onClick

但是,当我将recreate()放在onResume的{​​{1}}中时,这就像一个无限循环。我将非常感谢您帮助我找到解决方案。

谢谢。

1 个答案:

答案 0 :(得分:0)

使用recrate()变量或ActivityA(您可能更喜欢这两个中的任何一个),可以轻松避免public static进入SharedPreference的无限循环。

让我们在public static中有一个ActivityA变量,如下所示。

public static boolean shouldRecreate = false;

现在,当您从ActivityB更改样式时,请设置ActivityA.shouldRecreate = true并且不要调用recreate()

现在,在onResume的{​​{1}}函数中,检查ActivityA的值,并相应地调用shouldRecreate函数。

recreate()

希望有帮助!