android布局land和OnConfiguration已更改

android布局land和OnConfiguration已更改,android,android-layout,Android,Android Layout,我是安卓系统的初学者,我试图弄清楚如何在纵向和横向屏幕上使用不同的布局文件(main.xml) 我尝试将main.xml放在res/layout和res/layout区域中,然后重建项目。然而,这对我不起作用 然后,我在代码中添加了onConfigurationChanged方法,并将setContextView添加到R.layout.main中。这次我得到了不同方向的不同屏幕布局,但所有功能都丢失了。一些帖子还说,使用onConfigurationChanged方法并不是最好的主意 有人能帮我

我是安卓系统的初学者,我试图弄清楚如何在纵向和横向屏幕上使用不同的布局文件(main.xml)

我尝试将main.xml放在res/layout和res/layout区域中,然后重建项目。然而,这对我不起作用

然后,我在代码中添加了onConfigurationChanged方法,并将setContextView添加到R.layout.main中。这次我得到了不同方向的不同屏幕布局,但所有功能都丢失了。一些帖子还说,使用onConfigurationChanged方法并不是最好的主意

有人能帮我解决这个问题吗


谢谢,

转到您的AndroidManifest.xml并将此行添加到您的活动标记中:

android:configChanges=“orientation”


这告诉Android,当方向改变时,您希望控制活动的状态。通常,当方向发生变化时,Android实际上会破坏您的活动并再次通过
onCreate()
重新创建它,因此获得的任何数据都将丢失,除非状态保存在
onConfigurationChanged()中
方法。

Android将自动使用表示设备当前状态的布局。对于您的特定项目,设备旋转时应使用layout land xml文件。当您重写onConfigurationChanged方法并修改清单时,它会告诉Android您将自己处理配置更改,我不推荐这样做,特别是如果您希望加载新布局的话

下面是您需要做的(测试不同的布局)。将名为main的xml文件放在layouts文件夹中。对于布局,只需使用用蓝色背景填充父级的LinearLayout。现在创建一个名为main的xml布局文件,但将其放在layoutland文件夹下。在此布局中,使用红色背景


启动应用程序,旋转设备,你会看到背景颜色的变化。这是因为活动正在被销毁,并使用新布局重新启动。

请尝试使用OnRetainOnConfiguration Instance()和GetLastNoConfiguration Instance()方法来解决问题。 您还可以使用jrobinson3k1给出的上述解决方案。
Thanx.

我认为状态应该保存在
onSaveInstanceState()
中,而不是
onConfiguration ChangeDD()