7

日付を取得するための月ビューを含むポップアップ ウィンドウを作成しました。向きを変えると、Android が再びアクティビティをロードするため、ポップアップ ウィンドウが消えます。実行時に向きが変わっても開くにはどうすればよいですか?

4

4 に答える 4

5

アクティビティ表示ウィンドウにAndroidManifest.xmlを含めandroid:configChanges="orientation"ます。これを行うと、向きの変更を自分で処理することをAndroidに伝え、最終的にはアクティビティを破棄せず、ウィンドウを表示したままにします。

この手法は、縦向きモードと横向きモードでレイアウトが異なる場合に適しています。ただし、その場合でも、以下のように方向モードを検出することにより、カスタム レイアウトの実装を実行できます。

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

    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        Log.i("orientation", "Orientation changed to: Landscape");
    else
        Log.i("orientation", "Orientation changed to: Portrait");
}

プレビューするには、このサンプル アプリをダウンロードしてインストールします。

于 2012-03-03T12:37:38.870 に答える
4

向きが変わるたびに、Android はアクティビティを破棄し ( 呼び出しonDestroy())、その後再起動します ( 呼び出しonCreate())。
ポップアップが表示されたらすぐに、フラグを設定しますpopup_open=1。ポップアップには当然、閉じるボタンがあります。このボタンのクリック ハンドラで flag=0 を設定します。onRestoreInstanceState()メソッドまたは でアプリを再起動すると、ポップアップを再度開くことができますonCreate()。ここでは、フラグのチェックを行います。フラグが 1 に設定されている場合は、ポップアップを表示します。そのため、ポップアップが表示されている間に方向が変わったとしてもonRestoreInstanceState()、フラグの状態に基づいて何をすべきかがわかります。詳細な参照チェック: How to handle runtime changes

于 2012-03-03T12:26:47.887 に答える
1

このプロパティを manifest.xml のアクティビティに追加します

android:configChanges="orientation|keyboard" 

そして、それはそれを行う必要があります。

于 2012-03-03T12:56:03.713 に答える