Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

764
Vistas
Cómo inicializar contexto en fragmento en Android kotlin

En mi aplicación, quiero mostrar un mensaje cuando se muestra un fragment .
¡ viewPager y BottomNavBar para mostrar 4 fragments !
Quiero que cuando haga clic en los elementos de BottomNavBar muestre un fragment y quiero que cuando el fragment de visibilidad muestre un mensaje .
Escribo a continuación los códigos:

 class HomeRegisteredFragment : Fragment() { lateinit var toolbarTile: TextView override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_home_registered, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) //Initialize activity?.let { toolbarTile = it.findViewById(R.id.homePage_toolbarTitle) } //Set title toolbarTile.text = resources.getString(R.string.registered) context?.let { ContextCompat.getColor(it, R.color.blue_active) }?.let { toolbarTile.setTextColor(it) } } override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { Log.e("showFragLog", "Show") context?.let { Toast.makeText(it, "Show", Toast.LENGTH_SHORT).show() } } } }

En mis códigos anteriores, cuando haga clic en mi BottomNavBar para mostrar el fragment , muéstrame el mensaje de registro pero no muestre el mensaje Toast .
Cuando haga clic en otros elementos de BottomNavBar y vuelva a hacer clic en el elemento anterior de BottomNavBar , luego muestre el mensaje Toast .

Creo que la primera vez no inicializa el context en el método setUserVisibleHint .

¿Cómo puedo inicializar el context para mostrar Toast cada vez?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Cambié sus códigos con los siguientes códigos:

 class HomeRegisteredFragment : Fragment() { lateinit var toolbarTile: TextView lateinit var handler: Handler override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_home_registered, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) //Initialize activity?.let { toolbarTile = it.findViewById(R.id.homePage_toolbarTitle) } } override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser) { //Initialize handler = Handler() //Set delay handler.postDelayed({ Toast.makeText(requireContext(),"Show",Toast.LENGTH_SHORT).show() }, 10) } } }

Primero debe usar requireContext() en lugar de context() para evitar la pérdida de memoria.
Para mostrar Toast cada vez, puede inicializar el controlador en setUserVisibleHint , luego, después de un poco de retraso, ejecute su código.

espero ayudarte

over 4 years ago · Santiago Trujillo Denunciar

0

Almacenar contexto en una variable es una práctica horrible y la mayoría de las veces conduce a pérdidas de memoria, use requireContext() , este método se introdujo en la Biblioteca de soporte 27.1.0. Hoy en día, lo más probable es que tenga una versión más nueva o que incluso use androidx , por lo que no hay excusa para almacenar un contexto.

over 4 years ago · Santiago Trujillo Denunciar

0

Si está buscando el contexto de la aplicación para mostrar el mensaje de brindis, intente de la siguiente manera y vea si funciona. Además, inicialícelo en el método Crear para que tenga el contexto de la actividad en ese punto.

 val appContext = context!!.applicationContext
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda