次を使用して向きを固定しようとしました:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ディスプレイは縦向きのままですが、アクティビティは再作成されます。これを解決する方法はありますか?
向きが変わってもアクティビティが再作成されないように、アプリケーションの向きをロックするにはどうすればよいですか?
次を使用して向きを固定しようとしました:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ディスプレイは縦向きのままですが、アクティビティは再作成されます。これを解決する方法はありますか?
向きが変わってもアクティビティが再作成されないように、アプリケーションの向きをロックするにはどうすればよいですか?
まず、setRequestedOrientation()
回避できる場合は使用しないでください。代わりにマニフェスト要素android:screenOrientation
で属性を使用してください。<activity>
次に、マニフェスト要素で破棄/再作成サイクルを防ぐ必要もありandroid:configChanges="keyboardHidden|orientation"
ます。<activity>
これを試して:
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);}
デバイスで画面の回転がオンになっていても、画面が移動しないようになりました。
最善の解決策は、保存されたインスタンスを使用することです。画面の向きをロックしている場合は、ユーザーが設定した制約に従ってアプリを使用することを強制していることを意味します。したがって、常に onSaveInstanceState を使用してください。このリンクを読んでください: http://developer.android.com/training/basics/activity-lifecycle/recreating.html