web-dev-qa-db-ja.com

向きが変わったときにアクティビティが再開しないようにする

Android開発は初めてです。縦向きモードと横向きモードに別々の画面があります。向きを変更すると、対応する画面が読み込まれ、アクティビティが再開します。今度は、アクティビティを再開したくないのですが、向きを変更しますが、対応するscreen(axml)をロードする必要があります。

私が試してみました

[Activity(Label = "MyActivity"、ConfigurationChanges = Android.Content.PM.ConfigChanges.Orientation)]

上記の行は、アクティビティの再開を停止しますが、同じscreen(axml)をロードします。提案してください 。ありがとう

12
sujay

あなたの活動にこのコードを書いてください

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscapeView);

    } else {
        setContentView(R.layout.portraitView);
    }
}

また、この行をマニフェストファイルに追加します

Android:configChanges="orientation|keyboardHidden|screenSize"

したがって、これは両方を処理し、アクティビティを再開せず、方向の変更に従ってレイアウトをロードします。

40
Nirali

向きの変更を自分で処理することをOSに指定したので、次のように、レイアウトへの変更を自分で処理する必要があります。

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig); 

    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        setContentView(R.layout.portrait);
        //do other initialization
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        setContentView(R.layout.landscape);
        //do other initialization
    }
}
5
Kai