4

を追加android:configChanges="orientation"してオーバーライドしonConfigurationChanged()ました。私がやりたいのは、デバイスがタブレットサイズのディスプレイ解像度設定を持っている場合にのみ横向きの変更を許可することです (短辺が 480px よりも大きい - これを処理するためのより良い方法の提案は大歓迎です!)。これは 2 つの方法のいずれかで機能すると考えていましたが、携帯電話またはエミュレーターでのテストではどちらも機能しません。

私の最初のアイデアは、 のスーパー クラスの実装をonConfigurationChanged()呼び出さないことでしたが、スーパー クラスを呼び出さないことを訴える例外がスローされました。

私の 2 番目のアイデアは、newConfig.orientation をConfiguration.ORIENTATION_PORTRAITスーパー クラスに渡す前に手動で設定することでした。フレームワーク内の Activity と実際の Activity クラスの間に、これをオーバーライドする場所でも使用する ActivityBase クラスがあります。ActivityBase の newConfig.orientation の値をトーストして、実際に渡される構成オブジェクトに新しい値があることを確認できますが、それは無視され、向きの変更は既に発生しています。

場合によっては向きの変更を条件付きで短絡させ、別の場合は許可するコードをどこに置くことができますか?

4

1 に答える 1