如何重新创建之前 activity 中的按钮?
How to recreate buttons in previous activity?
我在 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
在单击按钮 "save" 后立即更改,因为除了保存到 SharedPreferences
我还在 onClick
.
中使用了 recreate();
但是当我把recreate()
放在ActivityA
中的onResume
中时,它就像一个无限循环。我将非常感谢帮助我找到解决方案。
提前致谢。
您可以使用 public static
变量或 SharedPreference
轻松避免 recrate()
在 ActivityA
中进入无限循环(您可能更喜欢这两个).
让我们在 ActivityA
中有一个 public static
变量,如下所示。
public static boolean shouldRecreate = false;
现在,当您从 ActivityB
更改样式时,请设置 ActivityA.shouldRecreate = true
而不要调用 recreate()
。
现在在 ActivityA
的 onResume
函数中检查 shouldRecreate
的值并相应地调用 recreate()
函数。
@Override
protected void onResume() {
super.onResume();
if (shouldRecreate) {
recreate();
shouldRecreate = false;
}
}
希望对您有所帮助!
我在 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
在单击按钮 "save" 后立即更改,因为除了保存到 SharedPreferences
我还在 onClick
.
recreate();
但是当我把recreate()
放在ActivityA
中的onResume
中时,它就像一个无限循环。我将非常感谢帮助我找到解决方案。
提前致谢。
您可以使用 public static
变量或 SharedPreference
轻松避免 recrate()
在 ActivityA
中进入无限循环(您可能更喜欢这两个).
让我们在 ActivityA
中有一个 public static
变量,如下所示。
public static boolean shouldRecreate = false;
现在,当您从 ActivityB
更改样式时,请设置 ActivityA.shouldRecreate = true
而不要调用 recreate()
。
现在在 ActivityA
的 onResume
函数中检查 shouldRecreate
的值并相应地调用 recreate()
函数。
@Override
protected void onResume() {
super.onResume();
if (shouldRecreate) {
recreate();
shouldRecreate = false;
}
}
希望对您有所帮助!