0

私は以下と活動しています:

android:screenOrientation="portrait"

そしてコード:

if(blah blah blah)
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

アクティビティ onCreate で。1. スマートフォンでテストすると、"setRequestedOrientation" によって破棄アクティビティが発生し、目的の画面方向で再作成されます。2. タブレット デバイスでテストすると、このコードはアクティビティを 1 回だけ実行します。「setRequestedOrientation」の後、破棄して再度作成することなく続行します。これは、onCreate でデバッガーまたはブレークポイントを使用せずにコードを開始した場合に発生します。onCreate関数で停止すると-ログに表示されます-破棄してonCreateを再度実行します。タブレットで特定の状況をキャッチする方法は?

更新: - 「方向ロック」がオフの場合、タブレットに問題が発生します。「方向ロック」が有効になっている場合、プログラムはスマートフォンと同じように機能します。

更新 2: - アプリケーション全体に優先する画面の向きを設定することは可能ですか。そのため、アクティビティが目的の方向を認識し始めるとき。これにより、不要な「setScreenOrientation」呼び出しが行われ、2 番目のアクティビティの作成が回避されます。

4

3 に答える 3

1

この問題に 1 日を費やした後、アプリケーションに次の変更を加えました。2. 最初のアクティビティでは、メニューからユーザーが選択したモードを使用して、優先する画面の向きを設定しました。3. ユーザーがメニュー オプションでモードを変更した場合にのみ setRequestedOrientation を呼び出します。

これにより、アクティビティが 1 回だけ作成されます。最後に:)

于 2012-04-26T10:42:12.847 に答える
0

いいえ。アプリケーション全体に優先画面の向きを設定することはできません...代わりに、それぞれのアクティビティでのみsetScreenOrientationを呼び出す必要があります...こちらのリンクを参照してください...

于 2012-04-24T12:17:26.947 に答える
0

設定できます

<activity ActivityName = "test_activity"
android:configChanges="orientation">
</activity>

あなたのアンドロイドマニフェストファイルで。方向の変更時にアクティビティを再開することはできませんが、onconfigurationchange は正常に呼び出されます。後で onconfigurationchange で表示方向を取得し、必要に応じて設定できます。

于 2012-04-24T12:08:12.920 に答える