問題タブ [onconfigurationchanged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
206 参照

android-activity - Activity.onConfigurationChanged() と Application.onConfigurationChanged() の関係は何ですか?

同じ名前とパラメーターを持つ 2 つの Android メソッドがあることに気付きました。

私が見つけることができるすべてのドキュメント ( Handling Runtime Changesなど) は、 Activity クラスのメソッドを参照しているようです。2つの方法の関係は何ですか?たとえば、マニフェストでアクティビティが構成変更の処理として指定されている場合、アクティビティの onConfigurationChange メソッドが呼び出されてからアプリケーションのメソッドが呼び出されますか、またはその逆ですか?

0 投票する
2 に答える
4113 参照

android - onConfigurationChanged メソッドはアクティビティのライフサイクルを変更しますか

Android初心者です。Android アプリケーションのライフサイクルに従って、画面の向きが変更されると、次のメソッドが呼び出されます。

しかし、今onConfigChangedでは XML ファイルに追加しました。アクティビティが開始されると、 onCreate、 、onStartおよびonResumeが呼び出されます。しかし、画面の向きが変わると、メソッドのみonConfigurationChangedが呼び出され、以下に示すように上記のメソッドは呼び出されません。

スクリーンショット

これには何か理由がありますか?

前もって感謝します。

0 投票する
1 に答える
330 参照

android - 向きの変更時に異なるレイアウトの以前のデータを保持する

異なる向きでそれぞれを表示する 2 つのレイアウトを含むアクティビティにフラグメントがあります。

縦向きの場合は、firstLayout .

横向きの場合は、secondLayout .

両方のレイアウトが同じコンテナーに表示されます。

だから私は次のようなものを持っています-

そのため、ユーザーがデバイスを回転させると (縦から横へ)、レイアウトsecondLayoutが呼び出されます。ユーザーがレイアウト内でデバイスを再度回転させるsecondLayoutと、フラグメントの他のレイアウト、つまりレイアウトfirstLayoutが呼び出されます。

問題は-

firstLayoutで多くの初期化作業を行っているため、アプリケーションがしばらくハングしたかのように、レイアウトのロードバックに非常に時間がかかりますonCreate()

そのため、フラグメント内でfirstLayoutを呼び出さずにレイアウトを呼び出す必要がありました。onCreate()

だから私はちょうどやった-

そしてonConfigurationChanged(Configuration newConfig)、レイアウトを膨らませてメソッドをオーバーライドしましたfirstLayout。しかし、これを行うと、以前のデータが失われました。

以前の状態を保持するために使用することも聞いたことsetRetainState(true)がありますが、向きの変化に関する以前のデータを取得するためにそれを使用する方法がわかりません。

firstLayoutユーザーが戻るボタンをクリックしたときに表示されるときと同じくらい速く、向きの変更時にレイアウトを表示する最良の方法は何ですか?

0 投票する
2 に答える
1090 参照

android - 向きが変わったらレイアウト変更、ボタンでエラー

onConfigurationChanged方向がいつ変わるかを知る方法を使用しました。しかし、他のレイアウトを呼び出すと、ボタンが機能しません。

ここに私のコードがあります:

IntroPage.java

android:configChanges="orientation|screenSize"そして、マニフェストxmlに書き込みます。誰か助けてください...ボタンが機能しない場合はどうすればよいですか?

0 投票する
1 に答える
791 参照

android - "keyboardHidden|orientation|screenSize" onConfigurationChanged は呼び出されません

マニフェスト:

キーボードを表示または非表示にするときに onConfigurationChanged が呼び出されることはありませんが、画面を回転させます。

誰が理由を知っていますか?

0 投票する
1 に答える
2684 参照

android - マニフェスト構成の変更があっても onConfigurationChanged が呼び出されない - なぜですか?

私は質問がひどいことを知っています。何千回も行われています。しかし、真剣に、私はこれを解決しようとして4時間立ち往生しています。私は2009年から今日までのすべてのリンクに参加しましたが、それらはすべて同じ解決策を提供します(****は理由を知っています)が私の場合には当てはまりません.

これは私のマニフェスト内のアクティビティです:

SDK 4.0 以降を使用しています。

そして、これは私のクラスです:

このようにアプリを実行すると、縦向きモードで見ることができ、正常に動作します。マニフェストで使用するandroid:screenOrientation="landscape"と、横向きモードで強制的に表示できます。これは、私のレイアウトは問題ないことを意味しますがonConfigurationChanged、画面を回転させようとしたときに正確に呼び出されないのはなぜですか? 私は何が欠けていますか?

編集:

AVD 構成:

ここに画像の説明を入力

自動回転が有効: ここに画像の説明を入力

ビデオはそのままです: ここに画像の説明を入力 そして、私のlogcatには出力がありません。

0 投票する
2 に答える
4029 参照

android - Android - 電話を縦向きにロックしますが、タブレットは横向きと縦向きの両方を許可します

電話を縦向きにロックするアプリを作成しようとしていますが、タブレット版では横向きと縦向きの両方を使用できます。

次のすべての質問に基づいて、ほぼ機能するものを作成しました...

タブレットではなく電話の画面の向きをロックするにはどうすればよいですか? (Android) タブレットのみで横向き/縦向きの両方を許可する方法電話では縦向き、タブレットでは横向き (Android-Layout) タブレットのみで横向きモード 携帯電話を縦向きモードでロックする方法

これまでに行ったことは、アクティビティを独自のベース アクティビティに拡張し、onCreate と上書きされた onConfigurationChanged の両方に方向変更コードを含めることです。

これですべて正常に動作します(onConfigurationChangedを上書きして、アクティビティが破棄されて再作成され、一瞬黒い画面が表示されるのを回避しました)。

私の主な問題は、携帯電話を横向きにすると、アクティビティが縦向きのままになることです...完璧です! ただし、スマートフォンは実際には横向きであるため、タブレットのレイアウトである横向きのレイアウトが使用されます。

私の理解では、setRequestedOrientation が呼び出されるとすぐに onConfigurationChanged を起動する必要がありますが、フラグメントが最初に呼び出され、次に onConfigurationChanged を呼び出す前にレイアウトが正しく膨張しません。これは、ランドスケープ レイアウトが既に設定されていることを意味します。

構成に基づいて、各アクティビティでレイアウトを設定できる可能性があることは理解していますが、実際にはそうしたくありません。

では、setRequestedOrientation に基づいて、適切な res フォルダーから適切なレイアウト ファイルをアプリに使用させるにはどうすればよいでしょうか。

ありがとう

0 投票する
0 に答える
1314 参照

java - 向きの変更が見過ごされるのはなぜですか?

ここで受け入れられた回答に基づいて、アクティビティに割り当てられたレイアウトを変更する最初のステップとして、このコードをアクティビティに追加しました。

...そして、AndroidManifest.xml のアクティビティの要素を変更しました。たとえば、次のように変更します。

...次のようになります。

(「configChanges」ジャズを追加しました)。

ただし、keypad.9 をマッシングするとエミュレーターの向きが反転しますが、トーストは発生しません (onConfigurationChanged() の「if」行のブレークポイントはヒットしません)。私は何を間違っているか、または省略していますか?

注: AndroidManifest の「configChanges」行から「|keyboardHidden」を削除しても違いはありませんでした (これは単なる直感でした。「キーボードによる向きの変更に注意を払わない」ことを意味するのではないかと思いました)。

アップデート

araut の提案と Jared Burrows の提案を試してみましたが、どちらもうまくいきません。

これは単にエミュレーターの問題ですか?私はまだそれをテストするデバイスを持っていないので、経験的にその質問に自分で答えることはできません.

更新 2

ここで読んだ内容に基づいて、OrientationEventListener ジャズを追加することでこのジレンマを解決できるのではないかと考えましたが、そうではありません。

これは私が追加したコードです (コンテキストで示されています。新しいのは OrientationEventListener のものです)。

...しかし、まだ反応がありません (ここまたは onConfigurationChanged() イベントからトーストは発生しません)。

0 投票する
1 に答える
1570 参照

android - Set orientation programmatically but also listen for orientation changes?

Is it possible to set the orientation for an activity but to also listen for orientation changes using onConfigurationChanged()? In my activity, I want to start another activity when the user rotates the phone to landscape position, and to come back to that activity when the phone is rotated back to portrait. The only way I can listen for that is if I don't explicitly set to portrait or landscape using setRequestedOrientation() or android:orientation in the manifest.

向きを設定する方法がなく、回転の変更もリッスンする場合、構成の変更時に OS がビューを回転するのを手動で防ぐにはどうすればよいですか?