Android abs con SearchView, onQueryTextListener no funciona

Estoy intentando utilizar la versión de la ayuda v4 de SearchView con la barra de acción sherlock.

Así que tengo mi botón de búsqueda en la barra de acción -> cuando lo toco el teclado aparece y el searchBar también.

Mi problema es que necesito utilizar los oyentes onQueryTextSubmit y onQueryTextChange pero nunca se despiden. Necesito usar la cadena de consulta searh y hacer cosas personalizadas con él.

Aquí está la actividad completa.java

public class ActivityMain extends SherlockFragmentActivity implements OnQueryTextListener, DialogFragmentListener { /** * PRIVATE ATTRIBUTES */ private static final String TAG = "ActivityMain"; private ViewPager _viewPager; private TabsAdapter _tabsAdapter; private DialogFiltre _dialogFiltre; private String _searchCurrentQuery; // data private boolean _doubleBackToExitPressedOnce = false; @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.clear(); switch ((int) _viewPager.getCurrentItem()) { case 0: getSupportMenuInflater().inflate(R.menu.empty_menu, menu); break; case 1: getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu); break; case 2: getSupportMenuInflater().inflate(R.menu.empty_menu, menu); break; } return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu); MenuItem searchItem = menu.findItem(R.id.search); SearchView searchView = (SearchView) searchItem.getActionView(); searchView.setSubmitButtonEnabled(true); searchView.setOnQueryTextListener(queryTextListener); return true; } @Override public boolean onQueryTextSubmit(String query) { Log.i(TAG, "onQueryTextSubmit--"); onSearchClicked(query); // hide keyboard InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); return false; } @Override public boolean onQueryTextChange(String newText) { Log.d(TAG, "onQueryTextChange--"); _searchCurrentQuery = newText.toString(); EtablissementApplication._adapter.getFilter().filter(_searchCurrentQuery); return true; } private void onSearchClicked(String query) { Log.d(TAG, "onSearchClicked--"); _searchCurrentQuery = query.toString(); EtablissementApplication._adapter.getFilter().filter(_searchCurrentQuery); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: getSupportActionBar().setDisplayHomeAsUpEnabled(false); break; case R.id.search: break; case R.id.menu_filtre: _dialogFiltre = DialogFiltre.newInstance(R.string.menu_filtre, this); _dialogFiltre.setValidDialogListener(this); _dialogFiltre.show(getSupportFragmentManager(), null); break; } return super.onOptionsItemSelected(item); } 

Está intentando utilizar un nuevo SearchView en lugar de utilizar el creado por el SupportMenuInflater. Estableciendo el oyente en diferentes SearchView que ve en la pantalla. Además, cada vez que se llama onPrepareOptionsMenu, se crea un nuevo SearchView, y por lo tanto no tiene ningún oyente establecido.

Intente hacer onPrepareOptionsMenu como esto:

 @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.clear(); switch ((int) _viewPager.getCurrentItem()) { case 0: getSupportMenuInflater().inflate(R.menu.empty_menu, menu); break; case 1: getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu); MenuItem searchItem = menu.findItem(R.id.search); SearchView searchView = (SearchView) searchItem.getActionView(); searchView.setSubmitButtonEnabled(true); searchView.setOnQueryTextListener(queryTextListener); break; case 2: getSupportMenuInflater().inflate(R.menu.empty_menu, menu); break; } return super.onPrepareOptionsMenu(menu); } 

Y eliminar el método anulado

 @Override public boolean onCreateOptionsMenu(Menu menu) { } 
  • No se puede obtener la vista de búsqueda en la barra de acciones para trabajar
  • Problemas de procesamiento No se pudo resolver resource @ id / search_edit_frame
  • Widget SearchView no aparece en la barra de acciones
  • La entrada de texto en SearchView no se muestra
  • Android: getSearchableInfo (getComponentName ()) devolviendo null?
  • Vista de búsqueda en LinearLayout usando android.support.v7.widget.SearchView
  • Cómo utilizar SearchView en la barra de herramientas de Android
  • Puntero nulo en ExpandedView para la búsqueda de ActionBar
  • ¿Cómo manejar el evento de clic de sugerencia con SearchView en ActionBar, ContentProvider llamando a webService, devolviendo el cursor?
  • SearchView fuente personalizada en android
  • Restaurar el estado del widget de vista de búsqueda de android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.