我在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
的ActivityA
中时,这就像一个无限循环。我将非常感谢您帮助我找到解决方案。先感谢您。
最佳答案
使用recrate()
变量或ActivityA
(您可能更喜欢这两种方法中的任何一种),可以轻松地避免public static
进入SharedPreference
的无限循环。
让我们在public static
中有一个ActivityA
变量,如下所示。
public static boolean shouldRecreate = false;
现在,当您从
ActivityB
更改样式时,请设置ActivityA.shouldRecreate = true
并且不要调用recreate()
。现在,在
onResume
的ActivityA
函数中检查shouldRecreate
的值,并相应地调用recreate()
函数。@Override
protected void onResume() {
super.onResume();
if (shouldRecreate) {
recreate();
shouldRecreate = false;
}
}
希望有帮助!
关于java - 如何在上一个 Activity 中创建按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58544690/