我有一個Activity
,它在配置更改(所需)時重新創建。我有一個DialogFragment
,在其佈局中調用setRetainInstance(true)
和一個EditText
。當應用程序到達前臺時,爲EditText保持鍵盤打開/關閉狀態
在DialogFragment的onActivityCreated
我打電話:
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
A)如果我打開鍵盤,然後當我把程序放到後臺,然後把它帶到foregournd然後我想鍵盤仍然是顯示爲。
B)如果我關閉鍵盤(EditText上仍然具有焦點的圖,是期望的行爲光標)然後我想鍵盤仍然被關閉如果我把程序放到後臺,然後將其帶到前臺。
我似乎無法達到A)和B)。當我將應用程序放到前臺時,鍵盤始終處於關閉狀態。我嘗試過.SOFT_INPUT_STATE_ALWAYS_VISIBLE,但隨後鍵盤始終打開。
在此先感謝您對我如何實現這一目標的任何建議。我也希望在旋轉的時候保持這種鍵盤狀態,但我會在那一天離開。彼得。
編輯 請注意,我不希望,以防止在配置改變而重新創建活動。
我也嘗試過使用WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED
,它確實在手機旋轉過程中保持鍵盤打開/關閉狀態(單個窗格佈局),但a)沒有與雙窗格佈局配合使用b)在使用手機時未保持鍵盤狀態應用程序的前景。
使用'getDialog()'的'onCreate'方法不應返回null? – Luksprog 2013-03-07 10:07:13
謝謝,改爲'onActivityCreated' – PJL 2013-03-07 10:40:52
我建議看一下'HIDE_IMPLICIT_ONLY','HIDE_NOT_ALWAYS','SHOW_FORCED','SHOW_IMPLICIT' of'InputMethodManager' http://developer.android.com/reference/android/view/ inputmethod/InputMethodManager.html,並且還通知該功能可能不會在所有設備中表現得與某些ROM(官方/否)可能在切換活動時強制進行鍵盤更改相同。 – madlymad 2013-03-13 09:55:27