Ocultar evento del teclado con la tecla ATRÁS

He notado la Android Market Application , al hacer clic sobre el botón de búsqueda que muestra el teclado, pero cuando hace clic en el botón back , la búsqueda EditText vuelven invisibles y el keyboard está oculto, el problema que no puedo ocultar el EditText después del teclado Se oculta después de presionar la tecla de regreso, porque no puedo encontrar un oyente para ocultar el evento del teclado. Encontré este ejemplo ¿Cómo capturar el evento "virtual keyboard show / hide" en Android? Pero no funciona en el teclado suave

Debe implementar esto para capturar el botón ATRÁS antes de que se envíe al IME:

http://developer.android.com/reference/android/view/View.html#onKeyPreIme(int, android.view.KeyEvent)

Creo que deberías manejar esto usando el enfoque:

  final InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); edttext.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(!(hasFocus)) { mgr.hideSoftInputFromWindow(edttext.getWindowToken(), 0); } } }); 

Hola, creo que la aplicación de mercado está usando el diálogo googleSearch (comprueba la actividad Searcheable ).

Puede implementar el editText en un popupWindow, y establecer el poupwindow como focusable. Muestre el teclado cuando se muestre su ventana emergente. En onDismiss ocultar el teclado.

 popupWindow.setFocusable(true); popupWindow.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { // TODO Auto-generated method stub inputMethodManager.hideSoftInputFromWindow( edttxtSearchBar.getWindowToken(), 0); } 

Esto asegurará, haga clic en cualquier lugar fuera de la ventana emergente o presione hacia atrás la ventana emergente desaparece también (junto con el teclado).

La aplicación de mercado de google está utilizando Fragmentos a través del Paquete de soporte de API. Al hacer clic de nuevo es en realidad volver atrás en la pila de fragmentos. Es como volver a una actividad sin el golpe de pantalla. El fragmento al que regresan no contiene el cuadro de búsqueda y es por eso que desaparece.

  **perfect answer** REFER THIS **SIMPLE EXAMPLE**...ITS TOOOO GOOOODDDD KTBEditTextWithListener.java // Custom edittext import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; public class KTBEditTextWithListener extends android.widget.EditText { public KTBEditTextWithListener(Context context) { super(context); // TODO Auto-generated constructor stub } public KTBEditTextWithListener(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // createFont(context); } public KTBEditTextWithListener(Context context, AttributeSet attrs) { super(context, attrs); // createFont(context); } private BackPressedListener mOnImeBack; /* constructors */ @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { if (mOnImeBack != null) mOnImeBack.onImeBack(this); } return super.dispatchKeyEvent(event); } public void setBackPressedListener(BackPressedListener listener) { mOnImeBack = listener; } public interface BackPressedListener { void onImeBack(KTBEditTextWithListener editText); } } //my_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.ktb.gopharma.views.KTBEditTextWithListener android:id="@+id/edit_text" style="@style/match_width"> </com.ktb.gopharma.views.KTBEditTextWithListener> </LinearLayout> //MyActivity.java package com.ktb.gopharma; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import com.ktb.gopharma.views.KTBEditTextWithListener; import com.ktb.gopharma.views.KTBEditTextWithListener.BackPressedListener; import com.ktechbeans.gopharma.R; public class MyActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_layout); KTBEditTextWithListener editText = (KTBEditTextWithListener) findViewById(R.id.edit_text); editText.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { showToast("keypad opn"); } }); editText.setBackPressedListener(new BackPressedListener() { @Override public void onImeBack(KTBEditTextWithListener editText) { showToast("keypad close"); } }); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.