私はKotlinを使用しているAndroidプロジェクトで作業しています。私は、コードのこの部分を持っている:初期化後に属性が消去される - kotlin
val foo = FooClass(this)
var colorRunning = FooClass.getProperty("myproperty")
とクラスFooClass
は次のとおりです。
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]!!
}
問題がHashMap
styles
がonCreate
方法で初期化してしまうことがありますが、私はのいくつかにアクセスしたいときメソッドgetPropery
HashMap
からの値は空です。
いくつかのテストを行うと、getProperty
のHashMap
を初期化すると、ハッシュは初期化されたままであることが確認できました。
この行は、 'Log.eがあるため、'、サイズとして1を印刷する必要があります(、this.styles.size.toString()は、「ハッシュサイズは3である」)あなたのキーは等しいです... – crgarridos
sure @crgarridosコピー貼り付けの問題でした。それが修正されました。ありがとう –
SomeHeritanceメインコードなしでそれを理解することは非常に難しいです。あなたは必ずonCreateより前にgetPropertyを呼び出しています – crgarridos