問題タブ [android-configchanges]

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 投票する
4 に答える
1216 参照

android - onCreate を呼び出さずにレイアウトを変更する

縦向きモードと横向きモード用にそれぞれ 1 つずつ、2 つのレイアウト ファイルを使用するアクティビティがあります。向きを変えるたびに onCreate メソッドが呼び出されることがわかります。使ってみた

マニフェスト ファイルに含まれていますが、縦向きレイアウトのみを読み取ります。onCreate を呼び出さずにレイアウトをランドスケープ モードに設定する方法はありますか?

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

android - 構成変更後、view.invalidate() は無視されました

SO を使用して 1 年間質問を解決した後、解決策が見つからない問題に遭遇しました。

複数のスレッドを使用してビットマップを計算しています。ビットマップの新しい行が計算されると、カスタム ビューを更新し、invalidate() を呼び出します。しかし、携帯電話を回転させると、ビットマップの更新が停止します。別の画面回転の後、View は 1 回だけ更新され、その間に計算されたビットマップの一部も表示されます。

onCreate メソッドの一部:

handlerビューを更新するために使用します:

私の見解では、私は使用します:

解決

これまでのところ、私は1つの解決策を見つけました。invalidate()の最後に追加すると、onDraw画面の向きが変更された後、ビットマップが(行ごとに)正しく更新されます。これは非常に「クリーンな」ソリューションだとは思わないので、構成の変更後に無視され invalidate()てから呼び出される理由を理解したいですか?handler

ありがとう!

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

java - 古いデバイスとAndroidManifestconfigChanges"screenSize"

ドキュメントの引用:

注意:Android 3.2(APIレベル13)以降、デバイスが縦向きと横向きを切り替えると、「画面サイズ」も変化します。したがって、APIレベル13以上(minSdkVersionおよびtargetSdkVersion属性で宣言されている)で開発するときに方向の変更によるランタイムの再起動を防ぎたい場合は、「orientation」値に加えて「screenSize」値を含める必要があります。つまり、android:configChanges = "orientation|screenSize"をdecalareする必要があります

構成の変更を無視する必要がありscreenSizeます。私の最小SDKレベルは8(Android 2.2)で、ターゲットSDKレベルは13です。したがって、マニフェストで紹介する必要があります。

ただし、Androidの設定が2.2に設定されているため、Eclipseはそれを認識しません。だから私はそれを適切なレベルに変更しました、そして今それは適切に構築されます。

ただし、screenSize構成の変更がまだ利用できない古いバージョンでは問題が発生する可能性があります。(たとえば、アプリがAndroid 2.2。デバイスで実行されている場合。)つまり、マニフェストのscreenSize値が不明であるため、マニフェストを読み取るときにアプリケーションがクラッシュします。それとも、3.2より前のデバイスでは単に無視しますか?

PS:現在、実際のデバイスでテストする機会はありません。そのような重大な問題については、エミュレーターだけを信頼することはできません。

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

android - 構成変更後のビュー属性 (リソースで指定) のリフレッシュ

非常に広い画面でアイコンを広くしたいので、values/ と values-w600dp/ でサイズを指定しました。

値/

値-w600dp/

レイアウト/

ただし、現在、向きの変更を手動で処理しています。

マニフェスト:

そのため、向きの変更後も、layout_width は (正しくない可能性がある) 古い値を引き続き使用します。

(おそらく onSizeChanged() メソッドで) layout_width を更新する最善の方法は?

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

android - Android で SoftKeyboard を維持し、レイアウトを更新する方法

デバイスが回転すると、縦向き/横向きに基づいてさまざまなレイアウトができます。したがって、この行をマニフェストに入れることはできません:

ただし、ユーザーがEditTextフィールドにいてキーボードが出ていて、そのフィールドにテキストが入力されている場合、デバイスを回転すると、キーボードが非表示になり、テキストが失われます (ユーザーにとってイライラします)。

この状況を処理する適切な方法はありますか?

0 投票する
3 に答える
5634 参照

android - アクティビティのレイアウトが変更された場合の構成変更後のフラグメント状態の復元

マイ アクティビティには、フラグメントを使用して、縦向きの 1 ペイン レイアウトと横向きの 2 ペイン レイアウトがあります。方向の変更後にシステムにすべてのビューを復元させたいのですが、どこから始めればよいかわかりません。

2 つの方向でレイアウトが異なる (ただし類似している) ことを考慮すると、これは可能ですか?

誰かがこれを実装した (または少なくとも試した) 場合は、経験を共有してください。

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

android - ローテーション後にLoaderCallbacksが失われました

ローダーを使用するたびにこの問題が発生します。起動AsyncTaskLoaderしてから画面を回転させても(1回でも数回でも構いません)onLoaderFinished()呼び出されません。loadInBackground()作業を終了しますがonLoaderFinished()、呼び出されません。コールバックが欠落しているように見えますが、アクティビティでは次のようになりますonCreate()

コールバックがアクティビティまたはフィールドによって実装されているかどうかは関係ありません。私の場合、フィールドを使用します。

時々それはかなりうまくいくが、いくつかのデバイスでは私は再びこの問題を抱えている。

Androidのバグトラッカーで検索しましたが、何も役に立ちませんでした。

これは私の間違いですか、どうすれば修正できますか?

編集:

0 投票する
4 に答える
87 参照

android - Android-saveinstancestateを介してオブジェクトまたはそのIDのみを保存する必要があります

私はAndroid開発に不慣れで、Webサービスを呼び出し、比較的単純なオブジェクトをハイドレイトする小さなアプリを作成しました(オークションリストなどの規模のものを考えてみてください)。現在、電話が回転してビューがリロードされると、Webサービスが再度呼び出され、オブジェクトが再水和され、リストが再表示されます。これは非常に無駄に思えます。onSaveInstanceStateを介してデータを保存する場合のベストプラクティスは何ですか?オブジェクト自体を保存しても問題ないと見なされますか、それともIDを保存して、毎回新しくロードするプロセス全体を実行するのがベストプラクティスですか。ここで考慮すべき他の経験則や落とし穴はありますか?

ありがとうございました

JP

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

android - 構成変更時のフラグメント保存状態

Twitterクライアントを開発しています。dbとwebからデータをロードするローダーを備えたTimelineFragmentがあります。onActivityCreatedにsetRetainInstance(true)があります。

向き変更ビューはいつリサイクルされますか?どうすればこれを防ぐことができますか?