Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 强制我的活动调用onSavedInstance状态_Java_Android_Android Activity - Fatal编程技术网

Java 强制我的活动调用onSavedInstance状态

Java 强制我的活动调用onSavedInstance状态,java,android,android-activity,Java,Android,Android Activity,我有一个android应用程序,其中我使用了两个主题。在主题更改时,我需要重新创建要重新创建的所有活动和其中的片段 与使用保存的instnce状态重新创建应用程序的方式相同 是否有任何方法可以强制我的活动调用已保存的实例状态?如果可能的话,我怎么做?如果不是,为什么?有没有其他办法来实现这一点 我当前的代码如下所示 public static final void restartActivity(final FragmentActivity activity){ activity.fin

我有一个android应用程序,其中我使用了两个主题。在主题更改时,我需要重新创建要重新创建的所有活动和其中的片段

与使用保存的instnce状态重新创建应用程序的方式相同

是否有任何方法可以强制我的活动调用已保存的实例状态?如果可能的话,我怎么做?如果不是,为什么?有没有其他办法来实现这一点

我当前的代码如下所示

public static final void restartActivity(final FragmentActivity activity){
    activity.finish();
    activity.startActivity(new Intent(activity, activity.getClass()));
}

问题是没有重新创建片段后堆栈。任何帮助都将不胜感激

您的状态未保存,因为您正在创建
活动的新实例。作为一种解决方案,您可以将您的状态作为
Intent
extras传递给这个新实例,并从这些extrase中恢复
onCreate
中的状态。

查看
onRestoreInstanceState()
onSavedInstance状态在活动结束时不会被触发。因此,不会调用onRestoreInstanceState,并且如果激发,则保存的实例状态为空。不确定您为什么需要重新创建活动,但您可以将您的数据以附加的方式传递给活动的新实例,并使用它来“还原”通过设置参数,在我自己的活动中重新创建所有封闭的片段,这将是一项艰巨的任务,我认为这不是一个可行的解决方案。我的问题是,有没有办法强制我的应用程序触发onSavedInstance状态,以便保留活动的状态。