onQueryTextChange activado después del restablecimiento de la aplicación
Estoy stumbed con searchview animado onQueryTextListener. Cuando la actividad y el fragmento creado primero funciona bien. A continuación, presionar el botón de inicio, abrir otras aplicaciones, hacer un trabajo allí para borrar los datos de la actividad de búsqueda y luego volver a la aplicación. Y cuando el método onQueryTextChange reanuda la actividad y el fragmento es activado por su propio. Intenté este problema El reemplazo de fragmentos activa onQueryTextChange en searchview pero no ayudó, solo ayuda cuando searchview SHOW_AS_ACTION_NEVER, pero en este caso no puedo ver searchview. ¿Cómo prevenir el auto-desencadenamiento de OnQueryTextListener? Fragmento del fragmento
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { searchView = new SearchView(getSherlockActivity().getSupportActionBar() .getThemedContext()); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { // TODO Auto-generated method stub return false; } @Override public boolean onQueryTextChange(String newText) { if (newText.length() > 0) { fpAdapter.getFilter().filter(newText); } else { loadData(); } return false; } }); TextView searchText = (TextView) searchView .findViewById(R.id.abs__search_src_text); searchText.setTextColor(Color.WHITE); searchText.setCursorVisible(false); ImageView searchButton = (ImageView) searchView .findViewById(R.id.abs__search_button); searchButton.setImageResource(R.drawable.search_menu_button); LinearLayout searchEditFrame = (LinearLayout) searchView .findViewById(R.id.abs__search_edit_frame); searchEditFrame.setBackgroundResource(android.R.color.transparent); View searchPlate = searchView.findViewById(R.id.abs__search_plate); searchPlate.setBackgroundColor(Color.argb(0, 0, 0, 0)); menu.add("Search") .setActionView(searchView) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); final MenuItem searchMenuItem = menu.getItem(0); final Animation in = AnimationUtils.loadAnimation(getSherlockActivity() .getApplicationContext(), R.anim.search_in); final Animation out = AnimationUtils.loadAnimation( getSherlockActivity().getApplicationContext(), R.anim.search_out); searchView.setQueryHint(getResources().getText( R.string.search_messages_hint)); searchView.setIconifiedByDefault(true); searchView .setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean queryTextFocused) { if (!queryTextFocused) { // searchView.startAnimation(out); searchMenuItem.collapseActionView(); } else { searchView.startAnimation(in); } } }); super.onCreateOptionsMenu(menu, inflater); }
Actualización: Esto sólo aparece en HTC sensación XL con Android 4.0.3, en 4.2 No veo este problema.
- SearchManager.getSearchableInfo (getComponentName ()) devuelve null
- Cambiar el texto de SearchView y el color de la sugerencia de appcompat
- Android: no puede encontrar TextView dentro de SearchWidget cuando usa la biblioteca de soporte técnico de Android
- Searchview que no cierra correctamente en la PRIMERA prensa trasera (es solamente perdida del foco)
- Expanda la vista de búsqueda para usar toda la barra de acciones (ocultar otras cosas)
- Android SDK 22 - Problemas de representación de SearchView
- Excepción de puntero nulo al utilizar SearchView con AppCompat
- Cómo descartar / cerrar / contraer SearchView en ActionBar en MainActivity?
- Filtros de búsqueda y filtrar sugerencias
- Estilo AppCompat SearchView con AppCompat 22.1.0 no funciona
- Cómo agregar espacio a la sugerencia de AutoCompleteTextView
- Android abs con SearchView, onQueryTextListener no funciona
- Vista de búsqueda en LinearLayout usando android.support.v7.widget.SearchView
Encontrado la única solución – set oyente en onResume:
@Override public void onResume() { super.onResume(); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { // TODO Auto-generated method stub return false; } @Override public boolean onQueryTextChange(String newText) { if (newText.length() > 0) { fpAdapter.getFilter().filter(newText); } else { loadData(); } return false; } }); }
utilice este código
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(final String s) { if(searchView.getWidth()>0) { // your code here } return false; } });
- ¿Cómo cambiar el fondo de la barra de acción al hacer clic en el menú "Buscar"?
- Cómo saber si un suscriptor de Otto está registrado