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.
- Barra de Acción Android SearchView as Autocomplete?
- Cómo diseñar un SearchView en la barra de acciones de Android
- ¿Cómo personalizar el botón "arriba" cuando se está expandiendo el searchView?
- Barra de Acción Sherlock SearchView no se expande al hacer clic
- Botón del micrófono ActionBar (búsqueda por voz) en SearchView
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); }
- Icono de Android SearchView
- Android SearchView Ocultar el teclado al iniciar
- SearchView es invisible con el parámetro collapseActionView desde la biblioteca de diseño 24.1
- Cambio del fondo dibujable del widget de búsqueda
- SearchView como la aplicación Google Play Video
- Android: no puede encontrar TextView dentro de SearchWidget cuando usa la biblioteca de soporte técnico de Android
- La vista de búsqueda no responde cuando se hace clic en la barra de herramientas de AppCompat
- Adición de SearchView en el fragmento
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) { }
- Obtener el archivo de sdcard con Uri
- establecer el enfoque en la parte superior de scrollview después de una acción que sucede android