我在 Android Studio 中遇到代码问题。我有ActivityA和ActivityB。我有ActivityA按钮。ActivityB是关于设置的。例如,我可以选择应用程序的主题。全部使用完成SharedPreferences。如果我使用以下代码将主题更改为 DARK:Button Settings = (Button) findViewById(R.id.settings);
Settings.setTextColor(Color.BLACK);
Settings.setBackgroundResource(R.drawable.shapestylethis3);然后我按返回键继续ActivityA,然后按钮就改变了。现在,当我进入ActivityB并且我想改回主题LIGHT时,我想恢复此默认按钮ActivityA:style="@android:style/Widget.Button.Small"但我不知道如何实现这一目标。ActivityB单击“保存”按钮后立即发生变化,因为除了保存到SharedPreferences我recreate();还在onClick.但是当我放入recreate()inonResume时ActivityA,它就像一个无限循环。我将非常感谢您帮助我找到解决方案。先感谢您。
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
您可以轻松地避免使用变量或变量(您可能更喜欢这两个中的任何一个)recrate()进入无限循环。ActivityApublic staticSharedPreference
让我们有一个如下所示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;
}
}
希望有帮助!
添加回答
举报
0/150
提交
取消