似たような質問はすでに何度か出ていますが、あってはならない奇妙な規則性を発見しました。
そのレイアウトにはありActivity
ます。EditText
ユーザーがそのフィールドをクリックすると、ソフト入力が表示されます。フラグを にandroid:windowSoftInputMode="stateUnchanged"
追加するとAndroidManifest
、デバイスの向きが変わってもすべてが期待どおりに機能します - キーボードはその状態を保持します。しかし、Fragment
その上にActivity
あるEditText
場合Fragment
は機能しません。AndroidManifest
この場合、フラグオンはスキップされ(フラグはカバーのみActivity
)、向きの変更中にキーボードが消えると想定しています。
向きの変更時にキーボードの状態を保持するためのクリーンなソリューションが見つかりませんでした。手動でキーボードをオンonActivityCreated()
に表示する解決策を見ましたが、方向の変更に耐えられるオブジェクトの変数でキーボードの可視性状態を保持する必要があるため、好きではありません。私が見つけたのは、にある場合EditText
、Activity
ユーザーが触れず、フォーカスされていない場合でも、キーボードはその状態を保持することです。これはまったく予想外です。
で使用されているため、取り外しFragment
て頼ることはできません。しかし、これは が に直接接続されている場合にも発生することを確認しました。Activity
Fragments
ViewPager
Fragment
Activity
また、チェックしたすべてのアプリケーションで、その問題が何らかの形で解決されていることもわかりました。
フラグメントによる向きの変更時にキーボードの状態を保持するためのクリーンなソリューションはありますか?
編集:android:configChanges="orientation|screenSize"
オプションも嫌いです。