2013-03-28 26 views
0

我有一個問題,只能在2.3設備上重現。 基本上,我有一個活動,兩個EditText都是可聚焦的,用戶可以輸入任何內容。 當我從肖像切換到風景時,我有一個要求說虛擬鍵盤不應該顯示。爲此,在OnConfigurationChanged上我使用InputMethodManager的hideSoftInputFromWindow。 但是,如果讓我們說場2是在人像模式下進行對焦,當我切換到橫向模式時,場會聚焦,但按下它不會打開鍵盤。 我甚至被迫用它來打開:顯示已經隱藏和編輯框集中後的軟鍵盤

edittext2.setOnClickListener(new OnClickListener() { 
@Override 
    public void onClick(View v) { 
InputMethodManager keyboard = (InputMethodManager) 
getSystemService(Context.INPUT_METHOD_SERVICE); 
keyboard.showSoftInput(v, InputMethodManager.SHOW_FORCED); 

但鍵盤沒有出現在任。

看起來,因爲它已經聚焦並且以前的鍵盤被顯示和隱藏,系統決定不打開另一個鍵盤。

你能爲我推薦一個quickfix嗎?

LATER

終於解決了這個使用這個小討厭的解決方法調用showSoftInput前:

edittext2.clearFocus 
edittext2.requestFocus 

回答

0

這個怎麼樣方法;

public static void setKeyboardFocus(final EditText primaryTextField) { 
    (new Handler()).postDelayed(new Runnable() { 
     public void run() { 
      primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0)); 
      primaryTextField.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, 0, 0, 0)); 
     } 
    }, 100); 
}