フォーム内のすべてのアクティビティを横向きまたは縦向きで使用したい。ユーザーが方向を選択した場合-これはすべてのアクティビティに有効です。 「背後」のオプションの向きで試してみました。 Googleによると、オリエンテーションは以前のアクティビティに依存します。最初のアクティビティでは、setRequestedOrientationを使用して、選択したユーザーの方向を設定します。次の活動は同じ方向に従う必要があります。コードにもsetRequestedOrientationを追加する必要がありますか?または、マニフェストの「背後」パラメータを調べますか? setRequestedOrientationを入れるとonCreateが再び発生する可能性がありますか?
更新:「portrait」およびsetRequestedOrientation()を試行しました-resilt si onCreateが2回呼び出されました。問題は次のアクティビティにあります->最初のアクティビティの「ポートレート」のため-Android=同じ方向で次のアクティビティを開始しました。私が設定した「風景」方向を無視します:(
今のところ、onCreateにチェックインします。
m_bSkip = (this.getRequestedOrientation() != MyApp.sInstance.GetScreenOrientation());
if (m_bSkip)
return;
Oncreateと入力し、画面の向きが望ましくない場合は、終了します。 onCreateを入力し、画面の向きが必要な場合-初期化を続行します。これにより、アクティビティに関連する非同期タスクを保持したり、新しいアクティビティをチェックしたりする必要なく、状況が修正されます。もちろん、onStart、onResume、onPausde、onStop ...などのすべての関数は、nullポインター例外を回避するためにこのフラグをチェックする必要があります。
アクティビティの向きを固定したい場合は、次を使用できます。
Android:screenOrientation = "portrait"
_Android:screenOrientation="sensorPortrait"
_
そのマニフェスト内のそのアクティビティの属性として。ただし、アプリケーションの起動時に以前の向きに応じて向きのランタイムを設定する場合は、onCreate()
で以前の向きを確認し、setRequestedOrientation()
UPDATE:@ s.co.ttが指すように、タブレットでのより良いサポートのために_Android:screenOrientation="sensorPortrait"
_を使用してください。
_Android:screenOrientation
_のさまざまな値とそれぞれの機能の詳細については、ドキュメントをご覧ください。
https://developer.Android.com/guide/topics/manifest/activity-element.html#screen
<activity
Android:name=".Android_mobile_infoActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
向きの変更を処理するには、次のようにAndroidManifest.xml
に次の行を追加します:Android:configChanges="orientation|screenSize"
タグの下の<activity>
<application
Android:allowBackup="true"
----------
---------- >
<activity Android:name=".MainActivity"
Android:configChanges="orientation|screenSize">
----------
</activity>
----------
</application>
注:orientation
、screenLayout
、screenSize
などの構成に変更があるたびに、アクティビティが再起動され、そのonCreate
メソッドが呼び出されます。これを防ぐには、構成の変更を処理する必要があります。
動作するモバイルとタブレットを試しました。誰でもポートレートまたはランドスケープを使用します。
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//or
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
<activity
Android:name=".Login_Activity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" />
または
<activity
Android:name=".Login_Activity"
Android:label="@string/app_name"
Android:screenOrientation="landscape" />
私の経験から、onCreateメソッドのすべてのアクティビティでsetRequestedOrientationを使用することをお勧めします。onCreateは再度呼び出されることはないので安全です。
Androidマニフェストエディタに移動し、その下にMainActivity.Javaがクリックされるのを確認します。右側に新しいウィンドウが表示されます。