13

次を使用して向きを固定しようとしました:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

ディスプレイは縦向きのままですが、アクティビティは再作成されます。これを解決する方法はありますか?

向きが変わってもアクティビティが再作成されないように、アプリケーションの向きをロックするにはどうすればよいですか?

4

4 に答える 4

41

まず、setRequestedOrientation()回避できる場合は使用しないでください。代わりにマニフェスト要素android:screenOrientationで属性を使用してください。<activity>

次に、マニフェスト要素で破棄/再作成サイクルを防ぐ必要もありandroid:configChanges="keyboardHidden|orientation"ます。<activity>

于 2010-04-18T19:25:54.550 に答える
3

これを試して:

1.- AndroidManifest.xml で目的の画面の向きを設定します

android:screenOrientation="portrait|landscape"

次のようになります。

    <application
    android:allowBackup="true"
    android:icon="~icon path~"
    android:label="~name~"
    android:supportsRtl="true"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme">
    </application>

2.- これを onCreate void (または任意の場所) の Java アクティビティ ファイル (例: "MainActivity.java") に追加します。

super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);

次のようになります。

protected void onCreate(Bundle savedInstanceState) {
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);}

デバイスで画面の回転がオンになっていても、画面が移動しないようになりました。

于 2016-09-08T15:07:36.717 に答える
1

最善の解決策は、保存されたインスタンスを使用することです。画面の向きをロックしている場合は、ユーザーが設定した制約に従ってアプリを使用することを強制していることを意味します。したがって、常に onSaveInstanceState を使用してください。このリンクを読んでください: http://developer.android.com/training/basics/activity-lifecycle/recreating.html

于 2013-03-15T03:08:43.083 に答える