1

縦向きモードと横向きモード用に 2 つの XML ファイルを別々に作成し、それぞれレイアウト フォルダーとレイアウトランド フォルダーに保存まし

注:何らかの理由で、そのアクティビティのマニフェスト ファイルに android:launchMode = "singleTask" を指定しました。

問題:縦向きと横向きの両方のモードで、レイアウト フォルダーから xml を取得します。縦レイアウト フォルダからのみ xml を取得する理由は何ですか? 「シングルタスク性」のせいでしょうか。これには何が欠けていますか?

前もって感謝します。

4

1 に答える 1

1

通常、向きを変更すると、構成変更イベントが発生し、アクティビティが破棄されて新しいレイアウトで再作成されます。再作成されると、対応する縦または横のレイアウトが使用されます。

方向の変更を明示的に処理することを示しているため、方向の変更時にアクティビティが破棄/再作成されないため、レイアウトは変更されません。目的を達成するには、アプリの起動時に元の向きを保存し、次のようにコードで向きの変更を処理する必要があります。

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;
    }
}

ロジックによっては、既存のビューから値を取得し、レイアウトを再設定した後にそれらを再設定する必要がある場合があります。

于 2013-04-30T09:01:15.487 に答える