Android 设备方向更改不会更改布局

Android 设备方向更改不会更改布局,android,Android,我在我的布局普通焊盘和布局普通端口文件夹中有替代布局,系统会根据我在启动时是否将设备保持在焊盘或端口中正确调用它们。我的问题是,当我启动应用程序后旋转设备时,它试图以某种方式使已经显示的视图适应新的情况,造成混乱。 如何告知系统在执行期间应切换到备用布局 我一直在尝试,发现当我没有android:configChanges=keyboardHidden |定向时,会再次调用oncreate,这会给出正确的布局,但这不是我想要的。我认为这不正常,是吗?可能是Android 2.3.3中的bug问题

我在我的布局普通焊盘和布局普通端口文件夹中有替代布局,系统会根据我在启动时是否将设备保持在焊盘或端口中正确调用它们。我的问题是,当我启动应用程序后旋转设备时,它试图以某种方式使已经显示的视图适应新的情况,造成混乱。 如何告知系统在执行期间应切换到备用布局


我一直在尝试,发现当我没有android:configChanges=keyboardHidden |定向时,会再次调用oncreate,这会给出正确的布局,但这不是我想要的。我认为这不正常,是吗?可能是Android 2.3.3中的bug问题。

您是否已经使用了OrientionListener? 如果否:

侦听器应该检测方向的变化。 然后在活动类中调用setContentView R.layout.name_of_layout


希望这能有所帮助。

您是否已经使用了方向侦听器? 如果否:

侦听器应该检测方向的变化。 然后在活动类中调用setContentView R.layout.name_of_layout

希望这有帮助。

您在该活动的清单中是否有android:configChanges=方向?这将阻止android自动更改您的布局。

您在该活动的清单中是否有android:configChanges=方向?这将阻止android自动更改您的布局。

可能很明显,但:

在res文件夹中,确保文件夹标记为layout和layout land。 纵向和横向.xml文件必须具有相同的文件名。 可能是显而易见的,但:

在res文件夹中,确保文件夹标记为layout和layout land。 纵向和横向.xml文件必须具有相同的文件名。 包括

android:configChanges="orientation"
在你的清单中,你说你想自己处理方向的改变。如果希望系统为您处理它,则应将其删除

自动操作非常有效。只有在有特定原因的情况下才应覆盖它

在没有上述清单条目的正常操作中,方向开关会导致当前活动关闭,然后以新方向重新打开,从当前活动的资源文件夹重新加载所有资源和布局。这个过程遵循的是所谓的过程

如果您包括上述清单条目,您的意思是,我将自己处理所有更改。请勿关闭“我的活动”,因此您有责任从活动中删除所有不需要的布局,并将其替换为当前方向所需的布局。

包括

android:configChanges="orientation"
在你的清单中,你说你想自己处理方向的改变。如果希望系统为您处理它,则应将其删除

自动操作非常有效。只有在有特定原因的情况下才应覆盖它

在没有上述清单条目的正常操作中,方向开关会导致当前活动关闭,然后以新方向重新打开,从当前活动的资源文件夹重新加载所有资源和布局。这个过程遵循的是所谓的过程


如果您包括上述清单条目,您的意思是,我将自己处理所有更改。不要关闭我的活动,因此您有责任从活动中删除所有不需要的布局,并将它们替换为当前方向所需的布局。

我遇到了相同的问题,并且我的清单中没有android:configChanges=方向


但是,我的mainactivity中确实有[ActivityConfiguration Changes=ConfigChanges.Orientation]。这似乎是覆盖自动方向处理的另一种方式。

我遇到了同样的问题,我的清单中没有android:configChanges=orientation


但是,我的mainactivity中确实有[ActivityConfiguration Changes=ConfigChanges.Orientation]。这似乎是覆盖自动方向处理的另一种方式。

它应该根据方向更改自动切换xml布局,但如果您正在测试它的设备没有正常屏幕,它将跳过这两种布局。它应该根据方向更改自动切换xml布局,但是如果你正在测试它的设备没有正常的屏幕,它会跳过这两个布局。我还有OrientionChangeListener,我做了一个新的setContentView,这会导致崩溃:在MapActivity中只允许有一个MapView。我有正确的文件夹布局。还有同样的问题…我的舱单上有这个。我还有一个OrientionChangeListener,我做了一个新的setContentView,这导致了崩溃:你只能有一个
MapActivity中的MapView。我有正确的文件夹布局。还有同样的问题…我有文件夹layout no main.xml,layout land和layout port都带有main.xml。xml在启动时被正确调用,问题是当我在执行过程中更改设备方向时,我的文件夹layout no main.xml和layout land以及layout port都带有main.xml。xml在启动时被正确调用,问题是当我在执行过程中更改设备方向时,我现在删除了它,但每次设备旋转时都会调用oncreate。那不是我想要的。你有什么建议?你不能两全其美。你要么让系统处理方向的变化,要么自己处理。您似乎还不了解基本的Android活动生命周期。在尝试其他操作之前,您应该确保了解这一点。方向更改关闭活动并重新启动,因此需要onCreate方法。另一种方法是手动更改新大小的活动布局。这不是一件容易的事,我开始明白了。重新启动活动不是一个选项,因此我需要执行OnConfiguration更改。是否允许在该方法中执行setContentView?我已经尝试过了,但是它崩溃了。我相信SetContentView只能调用一次。如果重新启动活动不是一个选项,您可能需要重新考虑应用程序的设计,因为方向改变不是活动重新启动的唯一时间。e、 g接到电话可能会导致您的应用程序关闭,直到通话结束。如果你的应用程序无法处理此问题,则对用户来说将不是一个好的体验。我来自ios,收到电话不会重新启动应用程序。坏消息!我有一个线程运行,接收gps位置信息,它被配置为能够在后台运行。我现在删除了它,但每次设备轮换时都会调用oncreate。那不是我想要的。你有什么建议?你不能两全其美。你要么让系统处理方向的变化,要么自己处理。您似乎还不了解基本的Android活动生命周期。在尝试其他操作之前,您应该确保了解这一点。方向更改关闭活动并重新启动,因此需要onCreate方法。另一种方法是手动更改新大小的活动布局。这不是一件容易的事,我开始明白了。重新启动活动不是一个选项,因此我需要执行OnConfiguration更改。是否允许在该方法中执行setContentView?我已经尝试过了,但是它崩溃了。我相信SetContentView只能调用一次。如果重新启动活动不是一个选项,您可能需要重新考虑应用程序的设计,因为方向改变不是活动重新启动的唯一时间。e、 g接到电话可能会导致您的应用程序关闭,直到通话结束。如果你的应用程序无法处理此问题,则对用户来说将不是一个好的体验。我来自ios,收到电话不会重新启动应用程序。坏消息!我有一个线程运行,接收gps位置信息,它被配置为能够在后台运行。一个电话也能阻止这一切吗?