如何修改 activity 中的布局

当方向改变时,我想让activity 不被毁坏,因此我在manifest 文件中添加:

<activity
          android:name="MyActivity"
          android:configChanges="orientation|keyboard|keyboardHidden">
 </activity>

现在的问题是每当方向转化成横向方式时,我如何才能使它转向一个新的布局?
在 layout-land 或者 layout-port 里加入布局文件还是不能正常运行。

首先在清单文件加权限:<uses-permission android:name="android.permission.CHANGE_CONFIGURATION">
然后重写onConfigurationChanged()方法.

@Override
public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){  
        //横向  
        setContentView(R.layout.main_landscape);  
        //重新实例化组件和设置监听
    }else{  
        //竖向  
        setContentView(R.layout.main);  
        //重新实例化组件和设置监听       
    }  
}

最后别忘了在onCreate()时加上判断,

if(getResources().getConfiguration().orientation ==Configuration.ORIENTATION_LANDSCAPE){
    setContentView(R.layout.main_landscape);
}else {
    setContentView(R.layout.main);
}

如果在 /res/layout 有竖向布局 main.xml,在/res/layout-land 有横向布局main.xml,在onConfigurationChanged()中应该像这样设置:

public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);                
            setContentView(R.layout.main);
    ...
    ...
    ...
   }