"kotlin-android-extensions" находит, что id является нулем в применении - PullRequest
0 голосов
/ 10 июня 2019

Когда я использую apply, id поиска "kotlin-android-extensions" равен нулю

   private val nickDialog: NickDialog by lazy {
        NickDialog(this@AccountInformationActivity).apply {
            this.setOnClickConfirmListener {
                account_nick.setRightText(it)
                this.dismiss()
            }
        }
    }

java.lang.NullPointerException: Попытка вызвать виртуальный метод 'void com.cnjnb.wealthstorm.view.TextLineView.setRightText (java.lang.String)' для ссылки на пустой объект.

Но когда я использую это, все в порядке.

    private val nickDialog: NickDialog by lazy {
        val a = NickDialog(this@AccountInformationActivity)
        a.setOnClickConfirmListener {
            account_nick.setRightText(it)
            a.dismiss()
        }
        a
    }

XML: account_nick - это view'id в моем XML

Часть этого:

  <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" />

1 Ответ

0 голосов
/ 10 июня 2019

Похоже, что источником вашей проблемы является account_nick свойство. Когда вы вызываете его в диалоговых окнах apply, для него выполняется код - он пытается найти это представление внутри диалога. Пока это вид деятельности, здесь вы получили ноль.

Чтобы избежать этого, вы можете сделать this@YourActivityClass до account_nick вызова.

private val nickDialog: NickDialog by lazy {
    NickDialog(this@AccountInformationActivity).apply {
        this.setOnClickConfirmListener {
            this@AccountInformationActivity.account_nick.setRightText(it)
            this.dismiss()
        }
    }
}
...