2012-06-24 5 views
3

Я создал метод проверки, используется ли клавиатура на вкладке activity (tab) с помощью поля editText: searchfield. Всякий раз, когда я оставляю активность (вкладку) и переключается на другую, я хочу закрыть клавиатуру. Поэтому я вызываю метод в onStop(). Но ничего не происходит, почему это не работает, кто-нибудь с большим пониманием того, как onStop() работает в Android? Как я могу заставить его работать? /Большое спасибо!Как закрыть клавиатуру Android при переключении действий/вкладок

@Override 
protected void onStop() 
{ 
    super.onStop(); 
    this.hideKeyboard(); <---------------------- 
    if(this.data != null) 
    { 
     this.data.destroy(); 
    } 
} 

private void hideKeyboard() 
{ 
    if (this.searchField != null) 
    { 
     InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(this.searchField.getWindowToken(), 0); 
    } 
} 
+2

Вы пытались 'onPause()' вместо 'onStop()'? – Floern

+0

попробуйте сделать это в onpause – Ronnie

+0

Попробуйте использовать 'TabHost.OnTabChangeListener()' в вашей основной 'Деятельности' и вызовите метод' hideKeyboard() 'оттуда. 'http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html – Squonk

ответ

4

От Комментарий

onStop() не будет вызываться при переключении вкладки. Вместо этого используйте onPause().

4

Возможно, вы должны сделать это в onPause() вместо onDestroy(), потому что обычно переход на новую активность не завершит текущий, если вы явно не сделаете это.

Смежные вопросы