2011-04-04 67 views
4

我在這裏閱讀了一些帖子,也嘗試了谷歌搜索。但我仍然有這個問題:
我做了一個subclassed自定義對話框。它包含一個EditText和一個按鈕(「OK」)。彈出對話框後,我希望自動顯示鍵盤。如何在顯示帶有EditText的對話框後使軟鍵盤出現?

我成功的把這個這樣做:在我的onCreate

imm = (InputMethodManager) EditDialog.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS); 

自定義對話框()

imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

在我解僱()

一旦彈出對話框,一旦按下「確定」按鈕,就會打開鍵盤並關閉鍵盤。但是,如果軟鍵盤已打開,並且按下我的手機/模擬器的HOME按鈕,則鍵盤將保持打開狀態,因爲 - 我想 - 我用SHOW_FORCED強制它打開。因此,我試圖隱藏(使用InputMethodManager中的toggleSoftInput())鍵盤,如果它在對話框的父活動onPause()方法中打開的話。這似乎只有使用解決方法纔有可能,如HERE所示。

TL; DR:我想要顯示軟鍵盤時,我的對話框帶有EditText和一個按鈕彈出(專注於EditText)。我得到了這個工作,但它涉及寫很多黑客關閉它正確。

編輯:我根據THIS

+0

可能的重複:https://stackoverflow.com/questions/4258623/show-soft-keyboard-for-dialog/19573049#19573049 – SparK 2015-08-31 12:04:41

回答

3

這是回答here,它爲我的偉大工程我的代碼。如果在鍵盤顯示時按Home鍵,在按Home鍵後正確隱藏。

-1
editTextProjectName.requestFocus(); 
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.showSoftInput(editTextProjectName, 
InputMethodManager.SHOW_IMPLICIT); 
+0

你能用文字解釋你的解決方案嗎? – Magnilex 2015-04-09 11:12:02

0
@Override 
public void onResume() { 
    super.onResume(); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.toggleSoftInputFromWindow(view.getWindowToken(), InputMethodManager.SHOW_FORCED, 0); 
      } catch (Exception e) { 

      } 
     } 
    }, 300); 
} 

和類型EditTextView的 「視圖」。 「上下文」是當前的上下文。

希望能幫助你。

相關問題