我对Android Studio中的代码有疑问。
我有ActivityA
和ActivityB
。
在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}}中时,这就像一个无限循环。我将非常感谢您帮助我找到解决方案。
谢谢。
答案 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()
希望有帮助!