AppCompatActivity en lugar de ComponentActivity en Jetpack componer

1 minuto de lectura

avatar de usuario
Bharat Kumar

quiero abrir datePicker cuadro de diálogo al hacer clic en un botón en Jetpack componer.
Para eso, estoy usando el siguiente código dentro del botón onClick acción.

val context = LocalContext.current
Button(onClick = {
    (context as AppCompatActivity).let {
        val picker = MaterialDatePicker.Builder.datePicker().build()
        picker.show(it.supportFragmentManager, picker.toString())
        picker.addOnPositiveButtonClickListener {
            // some code
        }
    }
})

Si estoy usando el ComponentActivity, supportFragmentManager no es apoyado.
¿Está bien extender la actividad de AppCompatActivity?
¿O hay alguna otra forma de obtener la solución si la solución mencionada anteriormente no es correcta?

  • También considere destacar este problema sobre los selectores de fecha y hora basados ​​en Compose para agregar su voto: tematracker.google.com/issues/197942880

    – Uli

    28 de marzo a las 19:41

avatar de usuario
gabriele mariotti

Puedes usar el AppCompatActivity ya que se extiende FragmentActivity que se extiende ComponentActivity.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
           val activity = LocalContext.current as AppCompatActivity
                Button(onClick={ showDatePicker(activity)}){
                Text("Picker")
           }
        }
    }
}

fun showDatePicker(activity: AppCompatActivity){
    val picker = MaterialDatePicker.Builder.datePicker().build()
    activity?.let {
        picker.show(it.supportFragmentManager, picker.toString())
        picker.addOnPositiveButtonClickListener {
        }
    }
}

Nota: requiere al menos la AppCompat 1.3.0 versión.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad