0

アプリは Android 3.2 では正常に動作しますが、Android 3.1 では動作しません

私のアプリケーションは横向きモードで、マニフェストは次のように言っています

 <activity
             android:name=".GameActivity"
             android:screenOrientation="landscape"
             android:configChanges="orientation|keyboardHidden"
       >

ランドスケープモードで設定するonConfigchangesをオーバーライドしました。

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

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    }

問題は、アプリケーションを 3.1 で実行すると、奇妙な問題が発生することです。ホーム画面を押すと..ポートレートモードにして再び戻ってくると、アプリはアクティビティを開始しますが、現在のアクティビティの半分の画面と、singleTop の他のアクティビティが表示されます。

現在のアクティビティの半分の画面とその古いアクティビティの上に

どうしてこうなったのかわからない不思議

4

1 に答える 1

0

value に関するandroid:configChangesに関するドキュメントを参照してくださいscreenSize

現在利用可能な画面サイズが変更されました。これは、現在の縦横比に対する現在使用可能なサイズの変化を表すため、ユーザーが横向きと縦向きを切り替えると変化します。ただし、アプリケーションが API レベル 12 以下をターゲットにしている場合、アクティビティは常にこの構成変更自体を処理します (Android 3.2 以降のデバイスで実行されている場合でも、この構成変更によってアクティビティが再開されることはありません)。

したがって、android 3.2 の設定android:configChanges="orientation"では、screenSize がアクティビティの再現につながるため、事実上無視されます。Android 3.1 では、向きが変わったときにアクティビティが再作成されないようにします。
したがって、orientation値を削除すると、アクティビティの自動再生成が適切なようです。または、価値を追加screenSizeして、両方のバージョンに同じバグが存在することに満足してください.

これは Android の面白いバグの一種で、向きの異なるアクティビティを切り替えると、向きが固定されているアクティビティの構成が変更されます。

于 2012-08-14T14:13:12.000 に答える