El atributo se borra después de la initialization – kotlin

Estoy trabajando en un proyecto de Android usando Kotlin. Tengo este pedazo de código:

val foo = FooClass(this) var colorRunning = FooClass.getProperty("myproperty") 

y la class FooClass es:

 class FooClass(val context: Context) : SomeHeritance{ private val styles: HashMap<String, String> = hashMapOf() override fun onCreate(context: Context?) { Log.e("Hash is empty here", this.styles.size.toString()) this.styles.put("a","a") this.styles.put("b","a") this.styles.put("c","a") Log.e("Hash is size is 3", this.styles.size.toString()) } override fun getProperty(someProp: String) { Log.e("Hash is size is 0", this.styles.size.toString()) //I don't understand why return styles[someProp]!! } 

El problema es que los styles HashMap se inicializan en el método onCreate , pero cuando quiero acceder a algunos de los valores del método getPropery el HashMap está vacío.

Al hacer algunas testings, pude comprobar que si inicializo HashMap en el método getProperty el hash permanece inicializado.

Parece que tu onCreate no se llama al inicio. Pon el init de tu Map dentro de un bloque init :

 init { with(styles){ put("a","a") put("b","a") put("c","a") } } 

De esa manera, puede estar seguro de tener los valores puestos en el map antes de acceder a él.

También asegúrese de tener valores null en su getProperty correctamente. En lugar de !! podrías lanzar una exception:

 fun getProperty(someProp: String): String = styles[someProp] ?: throw IllegalArgumentException() 
  • Recruit-MP LightCalendarView - Error al inflar la class, noSuchMethodException
  • Init método de inheritance
  • Error al configurar el reino con kotlin
  • Para una function de Kotlin utilizada como expresión, ¿hay una forma concisa de operar y devolver un valor?
  • Error al ejecutar el process de java con la class principal com.google.devtools.build.android.desugar.Desugar
  • Clases anónimas con lambdas en Kotlin
  • Los numbers en kotlin no son serializables
  • ¿El file kotlin no admite el diagtwig de flujo escrito por el descuento?
  • Estoy tratando de reproducir música desde SDcard
  • COROUTINE_SUSPENDED y suspendCoroutineOrReturn en Kotlin
  • Cómo proporcionar datos de testing y classs en proyectos de gradle de varios modules