2

似たような質問はすでに何度か出ていますが、あってはならない奇妙な規則性を発見しました。

そのレイアウトにはありActivityます。EditTextユーザーがそのフィールドをクリックすると、ソフト入力が表示されます。フラグを にandroid:windowSoftInputMode="stateUnchanged"追加するとAndroidManifest、デバイスの向きが変わってもすべてが期待どおりに機能します - キーボードはその状態を保持します。しかし、Fragmentその上にActivityあるEditText場合Fragmentは機能しません。AndroidManifestこの場合、フラグオンはスキップされ(フラグはカバーのみActivity)、向きの変更中にキーボードが消えると想定しています。

向きの変更時にキーボードの状態を保持するためのクリーンなソリューションが見つかりませんでした。手動でキーボードをオンonActivityCreated()に表示する解決策を見ましたが、方向の変更に耐えられるオブジェクトの変数でキーボードの可視性状態を保持する必要があるため、好きではありません。私が見つけたのは、にある場合EditTextActivityユーザーが触れず、フォーカスされていない場合でも、キーボードはその状態を保持することです。これはまったく予想外です。

で使用されているため、取り外しFragmentて頼ることはできません。しかし、これは が に直接接続されている場合にも発生することを確認しました。ActivityFragmentsViewPagerFragmentActivity

また、チェックしたすべてのアプリケーションで、その問題が何らかの形で解決されていることもわかりました。

フラグメントによる向きの変更時にキーボードの状態を保持するためのクリーンなソリューションはありますか?

編集:android:configChanges="orientation|screenSize"オプションも嫌いです。

4

1 に答える 1