我在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()放在onResumeActivityA中时,这就像一个无限循环。我将非常感谢您帮助我找到解决方案。

先感谢您。

最佳答案

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

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

public static boolean shouldRecreate = false;


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

现在,在onResumeActivityA函数中检查shouldRecreate的值,并相应地调用recreate()函数。

@Override
protected void onResume() {
    super.onResume();

    if (shouldRecreate) {
        recreate();
        shouldRecreate = false;
    }
}


希望有帮助!

关于java - 如何在上一个 Activity 中创建按钮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58544690/

10-09 17:53