Pasando datos de una actividad a un fragmento en Android Studio Kotlin (no duplicar, esos métodos no funcionan)
Estoy teniendo una actividad llamada “Activity de imagen” dentro de ella hay 2 fragmentos llamados “fragmento de visualización de imagen” y “fragmento de cambio de imagen”, para la actividad de imagen estoy obteniendo datos de un adaptador (usando getIntent) y hasta aquí todo está funcionando bien. Así que quiero enviar los datos (es decir, la URL) al fragmento pero mi método no está funcionando.
Mi código de actividad de imagen es así:
class ImageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image)
var gi = getIntent()
var url = gi.getStringExtra("url")
val fragment = FragmentDisplayImage.newInstance(url.toString())
Toast.makeText(this,url , Toast.LENGTH_SHORT).show()
var manager =supportFragmentManager
manager.beginTransaction().commit()
}
}
y mi archivo FragmentImage.kt es así:
private const val ARG_PARAM1 = "url"
class FragmentDisplayImage : Fragment() {
private var param1: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString("url")
var image= view?.findViewById<imageview>(R.id.Fragimage)
Picasso.get().load(param1).resize(700, 700).centerCrop().into(image);
Toast.makeText(context, param1.toString() , Toast.LENGTH_SHORT).show()
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_display_image, container, false)
}
companion object {
@JvmStatic
fun newInstance(param1: String) =
FragmentDisplayImage().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
}
}
}
}
Pero aún así, no puedo obtener mi URL aquí en el adaptador.
davy.ai
Para enviar datos (por ejemplo, URL) desde una actividad a un fragmento, puedes seguir estos pasos en tu código:
class ImageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image)
}
Aquí, obtenemos la URL del Intent y creamos una nueva instancia del fragmento FragmentDisplayImage con la URL como argumento. Luego, agregamos este fragmento a la actividad utilizando un FragmentManager.
class FragmentDisplayImage : Fragment() {
}
Aquí, recuperamos el argumento de la URL en el método onCreate y lo almacenamos en la variable imageUrl. En el método onCreateView, inflamos el diseño del fragmento y cargamos la imagen utilizando la biblioteca Picasso. Finalmente, devolvemos la vista inflada.
Estos cambios deberían permitirte pasar los datos de la URL desde ImageActivity al fragmento FragmentDisplayImage con éxito.