"kotlin-android-extensions" 申请时发现id为空
"kotlin-android-extensions" find id is null in apply
当我使用apply
时,"kotlin-android-extensions"发现id为null
private val nickDialog: NickDialog by lazy {
NickDialog(this@AccountInformationActivity).apply {
this.setOnClickConfirmListener {
account_nick.setRightText(it)
this.dismiss()
}
}
}
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.cnjnb.wealthstorm.view.TextLineView.setRightText(java.lang.String)' on a null object reference.
但是我用这个就OK了
private val nickDialog: NickDialog by lazy {
val a = NickDialog(this@AccountInformationActivity)
a.setOnClickConfirmListener {
account_nick.setRightText(it)
a.dismiss()
}
a
}
XML:
account_nick 是我 XML 中的视图 ID
部分是:
<com.cnjnb.wealthstorm.view.TextLineView
android:id="@+id/account_nick"
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintTop_toBottomOf="@id/account_profession"
app:leftText="nick"
app:rightText="bright" />
您的问题的根源似乎是 account_nick
属性。当您在对话框 apply
中调用它时,代码会为其执行 - 他试图在对话框中找到该视图。虽然它是活动视图,但这里你得到的是空值。
要避免它,您可以在 account_nick
调用之前放置 this@YourActivityClass
。
private val nickDialog: NickDialog by lazy {
NickDialog(this@AccountInformationActivity).apply {
this.setOnClickConfirmListener {
this@AccountInformationActivity.account_nick.setRightText(it)
this.dismiss()
}
}
}
当我使用apply
时,"kotlin-android-extensions"发现id为null
private val nickDialog: NickDialog by lazy {
NickDialog(this@AccountInformationActivity).apply {
this.setOnClickConfirmListener {
account_nick.setRightText(it)
this.dismiss()
}
}
}
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.cnjnb.wealthstorm.view.TextLineView.setRightText(java.lang.String)' on a null object reference.
但是我用这个就OK了
private val nickDialog: NickDialog by lazy {
val a = NickDialog(this@AccountInformationActivity)
a.setOnClickConfirmListener {
account_nick.setRightText(it)
a.dismiss()
}
a
}
XML: account_nick 是我 XML 中的视图 ID
部分是:
<com.cnjnb.wealthstorm.view.TextLineView
android:id="@+id/account_nick"
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintTop_toBottomOf="@id/account_profession"
app:leftText="nick"
app:rightText="bright" />
您的问题的根源似乎是 account_nick
属性。当您在对话框 apply
中调用它时,代码会为其执行 - 他试图在对话框中找到该视图。虽然它是活动视图,但这里你得到的是空值。
要避免它,您可以在 account_nick
调用之前放置 this@YourActivityClass
。
private val nickDialog: NickDialog by lazy {
NickDialog(this@AccountInformationActivity).apply {
this.setOnClickConfirmListener {
this@AccountInformationActivity.account_nick.setRightText(it)
this.dismiss()
}
}
}