2011-10-10 49 views
2

我有一个问题,只有当我使用AnySoftKeyboard时才会发生。 我试图根据EditText焦点显示/隐藏键盘。 我用我this postAnySoftKeyboad在隐藏后仍然保留垃圾数据

发现当我隐藏键盘的方法,有一个奇怪的行为 -

  • 当我旋转屏幕,那是在的EditText文本加倍。
  • 我认为它与onCreate方法有关,但是当我单击“back”(Finish())时,也可以看到它发生。我在活动结束前一分钟看到它。
  • 当我开始一个新的活动时(ActivityA中的ActivityB),然后单击“Back”一次不会执行任何操作(可能会“关闭”不可见的键盘)。
  • 当我点击“后退”再次,ActivityB关闭但我可以看到一个瞬间从ActivityA键盘大字体的文字在屏幕上(如100毫秒弹出)

有谁有一个想法如何处理它?

+0

显示您的代码引用您的确切问题... –

+0

试试这个,http://stackoverflow.com/questions/7289335/soft-keyboard-shows-up-on-edittext-focus-only-once/7291121#7291121 –

回答

1

显然,这是在AnySoftKeyboard的错误。 我没有发生,当我使用其他键盘。

我在隐藏它之前通过对EditText视图执行setText来解决它 - 它可能会重置键盘对象上的某些内容。

这里是我的代码:

 View view = getWindow().getCurrentFocus(); 
     if (view==null) 
      return; 

     IBinder binder = view.getWindowToken(); 
     if (binder == null) 
      return; 

     // I used this to fix the strange behaviour 
     if (view instanceof EditText) 
      ((EditText)view).setText(((EditText)view).getText().toString()); 


     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(binder, InputMethodManager.HIDE_NOT_ALWAYS); 

令人惊讶它的工作原理!

0

试试这个:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
相关问题