es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Escucha para hacer clic en cualquier área de la SearchView

Tengo un SearchView y estoy usando componentes de navegación. Creé una lógica tal que cuando presiono el botón de búsqueda en el teclado desde el fragmento A, hay una transición con la transferencia del texto del SearchView al fragmento B.

Aquí estoy en el fragmento B, y el texto del SearchView en el fragmento A se pasó al campo de entrada del SearchView en el fragmento B, y ahora necesito que cuando presione cualquier área del SearchView, regrese al fragmento A, mientras android: iconifiedByDefault = "false", ¿cómo hacerlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esta funcionalidad, podemos utilizar setOnQueryTextFocusChangeListener en SearchView en Fragment B. Cuando se hace clic en SearchView, podemos utilizar el componente de navegación para volver a Fragment A con el texto de consulta existente como argumentos.

    Aquí hay un ejemplo de código que se puede utilizar:

    searchView.setOnQueryTextFocusChangeListener { _, hasFocus ->
        if(hasFocus){
            val queryText = searchView.query.toString()
            val action = FragmentBDirections.actionFragmentBToFragmentA(queryText)
            findNavController().navigate(action)
        }
    }
    

    En el código anterior, hemos establecido un listener de cambio de enfoque en SearchView. Cuando SearchView obtiene el enfoque (es decir, se hace clic en ella), obtenemos el texto de consulta desde SearchView y creamos una acción para navegar de vuelta a Fragment A usando el componente de navegación. Pasamos el texto de consulta como un argumento en la acción para que se pueda usar en Fragment A.

    Para asegurarnos de que SearchView no esté iconificado por defecto, necesitamos establecer el atributo iconifiedByDefault en false en ambos diseños de Fragment A y Fragment B. Aquí hay un ejemplo:

    <searchview android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:iconifiedbydefault="false"></searchview>
    

    Al hacer esto, SearchView siempre se expandirá y será visible en tanto Fragment A como Fragment B.

Comments are closed.