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