我將EditText
作爲列表樣式AlertDialog
(它由默認的ListView
實現支持)中的一個元素呈現。我有點期待這種情況不會改變EditText的行爲,但它確實:點擊EditText不會產生軟鍵盤了。任何無痛的方式來觸發對話框中的EditText軟鍵盤?
瞎搞,重點設置了一個小時後,點擊處理我厭倦了和調試到InputMethodManager.showSoftInput()
,並發現這一點:
public boolean showSoftInput(View view, int flags,
ResultReceiver resultReceiver) {
...
if (mServedView != view && (mServedView == null
|| !mServedView.checkInputConnectionProxy(view))) {
return false;
}
...
}
}
這裏的問題是,mServedView
是的來頭對話框ListView控件,而view
是EditText,並且ListView.checkInputConnectionProxy()
在ListView的默認實現中(將被子類重寫)只是簡單地return false
。
更糟糕的是,我找不到一種方法來設置允許代理IME請求的自定義ListView; AlertDialog.Builder.setView()
接受自定義ListView,但這不是InputMethodManager看到的ListView。
任何建議如何解決這個問題?
邪惡的想法,但我敢肯定,扔的onfocus /的onClick處理程序內的任何事情都會簡單地終止您的應用程序。 – Matthias 2009-11-19 09:18:19