我遇到的问题只能在2.3设备上重现。 基本上,我有一个带有两个EditTexts的活动,它们都是可聚焦的,用户可以在其中输入任何内容。 当我从纵向切换到横向时,我要求说明不应显示虚拟键盘。为了实现这一点,在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);
但键盘也没有出现。
似乎因为它已经被聚焦并且以前的键盘被显示和隐藏,系统决定不再打开另一个键盘。
你能为我建议一个快速修补程序吗?
LATER
最后在调用 showSoftInput 之前使用这个有点讨厌的解决方法解决了这个问题:
edittext2.clearFocus
edittext2.requestFocus
答案 0 :(得分: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);
}