通常、向きを変更すると、構成変更イベントが発生し、アクティビティが破棄されて新しいレイアウトで再作成されます。再作成されると、対応する縦または横のレイアウトが使用されます。
方向の変更を明示的に処理することを示しているため、方向の変更時にアクティビティが破棄/再作成されないため、レイアウトは変更されません。目的を達成するには、アプリの起動時に元の向きを保存し、次のようにコードで向きの変更を処理する必要があります。
private int currentOrientation;
public void onCreate(Bundle sis) {
...
currentOrientation = getResources().getConfiguration().orientation;
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(currentOrientation != newConfig.orientation) {
//re-set the layout into your activity
setContentView(R.layout.my_layout);
currentOrientation = newConfig.orientation;
}
}
ロジックによっては、既存のビューから値を取得し、レイアウトを再設定した後にそれらを再設定する必要がある場合があります。