Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在以前的活动中重新创建按钮?_Java_Android_Recreate - Fatal编程技术网

Java 如何在以前的活动中重新创建按钮?

Java 如何在以前的活动中重新创建按钮?,java,android,recreate,Java,Android,Recreate,我对Android Studio中的代码有问题 我有ActivityA和ActivityB 在活动a中,我有按钮活动b是关于设置的。例如,我可以选择应用程序的主题。所有操作都是使用SharedReferences完成的 如果我使用以下代码将主题更改为深色: Button Settings = (Button) findViewById(R.id.settings); Settings.setTextColor(Color.BLACK); Settings.setBackgroundRe

我对Android Studio中的代码有问题

我有
ActivityA
ActivityB

活动a
中,我有按钮<代码>活动b是关于设置的。例如,我可以选择应用程序的主题。所有操作都是使用
SharedReferences
完成的

如果我使用以下代码将主题更改为深色:

Button Settings = (Button) findViewById(R.id.settings);
Settings.setTextColor(Color.BLACK);     
Settings.setBackgroundResource(R.drawable.shapestylethis3);
然后我按back键转到o
活动a
——然后按钮被更改

现在,当我在
ActivityB
中,并且我想重新更改主题
时,我想重新获得
ActivityA
上的默认按钮:

style="@android:style/Widget.Button.Small"
但我不知道如何做到这一点
ActivityB
在单击按钮“保存”后立即更改,因为除了保存到
SharedReferences
之外,我还使用了
recreate()onClick
中选择code>

但是,当我在
ActivityA
onResume
中放入
recreate()
时,它就像一个无限循环。我真的很感谢你帮我找到了解决办法


提前谢谢。

您可以使用
公共静态变量或
共享引用(
)轻松避免
重新创建()
活动a
中进入无限循环

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

public static boolean shouldRecreate = false;
现在,当您从
ActivityB
更改样式时,请设置
ActivityA.shouldrescreate=true
,不要调用
recreate()

现在,在您的
活动a的
onResume
函数中,检查
shoulldrecreate
的值,并相应地调用
recreate()
函数

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

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

希望有帮助

使用
public static
变量或
SharedReference
(您可能更喜欢这两个变量中的任何一个),您可以轻松避免
Recreate()
进入
活动a
的无限循环

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

public static boolean shouldRecreate = false;
现在,当您从
ActivityB
更改样式时,请设置
ActivityA.shouldrescreate=true
,不要调用
recreate()

现在,在您的
活动a的
onResume
函数中,检查
shoulldrecreate
的值,并相应地调用
recreate()
函数

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

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

希望有帮助

很高兴知道我能帮助你!欢迎来到StackOverflow!很高兴知道我能帮助你!欢迎来到StackOverflow!