"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()
        }
    }
}