设备方向更改时,xml不会切换

我做了两个文件夹, res/layoutres/layout-land

我得到的输出
如果我以portrait模式启动应用程序,如果应用程序以portrait模式运行,它将始终使用layout文件夹中的xml。 如果我将设备更改为landscape模式,将不会在layout-land使用xml
如果以landscape模式启动,则只能在layout-land使用xml
当方向改变时,xml不会切换

我期望的是
它应该在纵向模式下使用layout文件夹中的xml,并在横向模式下使用layout-land中的xml

在Manifest文件中,我为活动添加了android:configChanges="orientation"

 <supports-screens android:resizeable="true" android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" /> 

我在这里错过了什么吗? 我需要在这里做什么改变?
谢谢

Solutions Collecting From Web of "设备方向更改时,xml不会切换"

清单代码

 android:configChanges="orientation|screenSize" 

忽略“layout-land”中的XML并使用“layout”文件夹中的XML。 如果您为横向创build不同的XML, 则不要使用该操作的android:configChanges="orientation|screenSize"标记。

android:configChanges =“orientation”将停止重新启动活动,所以也要重新加载xml布局(通常在onCreate中执行此操作)。 相反,onConfigurationChanged(newConfig)被调用。 所以你可以这样做:

 @Override public void onConfigurationChanged(Configuration newConfig){ super.onConfigurationChanged(newConfig); setContentView(R.layout.<xml file>); } 

如果有的话,这将重新从布局土地目录加载布局。 注意:您还需要将操作链接到button和类似的东西

不要忘记打开Settings -> Display -> Auto-rotate screen选项。

 private void setContentBasedOnLayout() { WindowManager winMan = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); if (winMan != null) { int orientation = winMan.getDefaultDisplay().getOrientation(); if (orientation == 0) { // Portrait setContentView(R.layout.alertdialogportrait); } else if (orientation == 1) { // Landscape setContentView(R.layout.alertdialoglandscape); } } }