[解決済み】Androidで向きを変えないようにするにはどうしたらいいですか?
質問
縦画面で使いたいアプリケーションがあり、そのために android:screenOrientation="portrait" をマニフェストXMLに記述しています。これは HTCマジック の携帯電話 (他の携帯電話でも同様に向きの変更を防ぐことができます) で使用できます。
しかし、私は HTC G1 ハードウェアを開くと QWERTYキーボード (仮想キーボードではありません)。私のアクティビティはポートレートモードのままですが、再起動がかかり、すべての状態が失われるようです。この現象は HTCヒーロー のバージョンです。
私のアプリケーションはかなり大きいので、キーボードを開いたときに再起動し、すべての状態を失いたくないのです。どうすればそれを防ぐことができますか?
解決方法は?
2013年4月更新。これはやめましょう。この質問に最初に答えた2009年当時も、今も、本当に良いアイデアではありません。理由については、hackbodによるこの回答をご覧ください。
アンドロイドの方向変更時にasynctaskでアクティビティを再読み込みしないようにする。
追加
android:configChanges="keyboardHidden|orientation"
をAndroidManifest.xmlに追加します。これは、あなたが自分で処理する予定の設定変更(この場合は何もしないこと)をシステムに伝えるものです。
<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
デベロッパーリファレンス参照 コンフィグ変更 をご覧ください。
しかし、アプリケーションは電話などでいつでも中断される可能性があるので、一時停止したときにアプリケーションの状態を保存するコードを追加しておく必要があります。
更新する Android 3.2より、"screenSize"も追加する必要があります。
<activity
android:name="MainActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation|screenSize">
デベロッパーガイドより 自分で設定変更する場合
<ブロッククオート
ご注意ください。Android 3.2(APIレベル13)より、quot;画面サイズ".が表示されるようになりました。
は、デバイスが縦長と横長を切り替えたときにも変化します。
の向きになります。したがって、以下のような理由で実行時に再起動することを防ぎたい場合は
APIレベル13以上で開発する場合、オリエンテーションが変化します。
minSdkVersion属性とtargetSdkVersion属性で宣言されています)。
の値に加えて、"screenSize" の値も含める必要があります。
の値を含める必要があります。つまり、次のように宣言する必要があります。
android:configChanges="orientation|screenSize"
. ただし
アプリケーションは API レベル 12 以下をターゲットにしているので、アクティビティは常に
はこの設定変更自体を処理します(この設定変更は
は、Android 3.2以降で動作している場合でも、アクティビティを再起動させません。
以上のデバイス)。
関連
-
[解決済み】Android Studio 3.2 - com.android.tools.build:aapt2:3.2.0-4818971 を見つけられませんでした。
-
[解決済み】カメラサービスへの接続に失敗しました。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] Androidのランドスケープモードを無効にする方法を教えてください。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android - SDKバージョン23のアップデート後、ACTION-VIEWインテントフィルタを持つアクティビティを少なくとも1つ追加する。
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み] 現在のテーマでスタイル 'coordinatorLayoutStyle' を見つけることができませんでした。
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み】Android Studio 3.2 - com.android.tools.build:aapt2:3.2.0-4818971 を見つけられませんでした。
-
[解決済み】Android Studio。Android.support.design.widget.FloatingActionButton クラスを膨らませるのにエラーが発生する。
-
[解決済み] Looper.prepare()を呼び出していないスレッドではハンドラを作成できない
-
[解決済み] 複数のデバイスを接続しているときにADB Shellを使用するには?error: more than one device and emulator "で失敗します。
-
[解決済み] Gradleのエラーです。イベントディスパッチスレッドからの書き込みアクセスは、Android Studioでのみ許可されます。