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.

¿Cómo obtengo el contexto dentro de un objeto compañero que está dentro de una clase de datos Kotlin?

Estoy intentando usar una cadena de recursos dentro de un objeto compañero que está dentro de una clase de datos. Pero no sé cómo obtener el contexto en ese caso en Kotlin. ¿Alguien sabe cómo hacerlo?

data class PhoneCall(
    val type: String,
    val code: String,
    val description: String
){
    companion object{
        const val SOLUTION_NO_SOLUTION = "NO_SOLUTION" 
        const val SOLUTION_TOMORROW = "71_INAT"
        const val SOLUTION_TODAY = "72_INAT"

        val solutions = listOf(
            PhoneCall(
                Service.Traffic.PICK_UP,
                SOLUTION_NO_SOLUTION,
                Resources.getSystem().getString(R.string.makeService)
            )
        )
    }
}

Necesito usar una cadena de recursos en el tercer parámetro, pero no puedo obtener el contexto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el contexto dentro de un objeto compañero, se puede pasar como parámetro al crear una instancia de la clase de datos. Se puede modificar la clase de datos PhoneCall para incluir un parámetro de contexto en el constructor y pasarlo al objeto compañero al crear la lista de soluciones:

    data class PhoneCall(
        val type: String,
        val code: String,
        val description: String
    ){
        companion object{
            const val SOLUTION_NO_SOLUTION = "NO_SOLUTION"
            const val SOLUTION_TOMORROW = "71_INAT"
            const val SOLUTION_TODAY = "72_INAT"
    
            fun getSolutions(context: Context): List<phonecall>{
                return listOf(
                    PhoneCall(
                        Service.Traffic.PICK_UP,
                        SOLUTION_NO_SOLUTION,
                        context.getString(R.string.makeService)
                    )
                )
            }
        }
    }
    

    Luego, se puede llamar al método getSolutions con el parámetro de contexto para obtener la lista de soluciones con la cadena de recursos reemplazada.

    kotlin
    val solutions = PhoneCall.getSolutions(context)

Comments are closed.