Android 当方向改变时,活动被恢复两次

Android 当方向改变时,活动被恢复两次,android,oncreate,android-orientation,Android,Oncreate,Android Orientation,我在安卓应用程序的活动中遇到了一些问题 我发现,当方向发生变化时,我的应用程序两次进入此活动的“onCreateView()”方法,这给我带来了问题。当我点击相应的按钮,该活动开始时,一切正常,但在该活动中,当方向改变时,我有一些问题,因为进入两次,即活动重新启动两次 。。。有人知道方向改变时活动的行为吗?为什么会发生这种情况 非常感谢。当方向改变时,调用onDestroy(),然后调用onCreate()。 更多信息:因为onCreateView()不是活动生命周期的一部分,而是片段的一部分,

我在安卓应用程序的活动中遇到了一些问题

我发现,当方向发生变化时,我的应用程序两次进入此活动的“onCreateView()”方法,这给我带来了问题。当我点击相应的按钮,该活动开始时,一切正常,但在该活动中,当方向改变时,我有一些问题,因为进入两次,即活动重新启动两次

。。。有人知道方向改变时活动的行为吗?为什么会发生这种情况


非常感谢。

当方向改变时,调用onDestroy(),然后调用onCreate()。 更多信息:

因为
onCreateView()
不是活动生命周期的一部分,而是片段的一部分,所以我假设您的活动中有一个片段。 另外,我假设您使用
FragmentManager
FragmentTransaction
手动添加此片段。由于Android在方向更改之间保留了所有添加的片段,因此很可能您不检查您的片段是否已经存在于此活动中,因此您再次添加它,从而导致调用附加的
onCreateView

如果是这种情况-您需要检查您的
savedInstance
onCreate
中是否为空。如果是,则添加片段。否则活动将被恢复,所以片段已经存在


我知道答案有很多假设。但我仍在掌握我的心灵感应技能:)

尝试在您的活动中添加以下内容:

android:configChanges="orientation|screenSize|keyboardHidden"

这意味着在方向改变时不重新创建活动。

onStart()
中有什么东西吗?没有,我没有那种方法。是@Pavel,它是加载到活动中的片段,我使用FragmentManager和FragmentTransaction添加它,我有
onCreate()
onCreateView()
方法。。。我应该看到的。是否应该删除“onCreate()”方法?我如何检查之前是否有其他碎片?但是我使用
getSupportFragmentManager().beginTransaction().replace(R.id.xxx,fragment.commit()
getSupportFragmentManager().beginTransaction().add(R.id.xxx,fragment.commit()。。。然后我不添加另一个片段,而是替换您应该从活动的onCreate调用fragment replace的片段。不是Fragment的。请确保情况属实