Я обновляю представление в методе действия onCreate, который работает нормально, используя расширение kotlin, как указано ниже.
Активность onCreate
import kotlinx.android.synthetic.main.activity_otpverification.*
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_otpverification)
tvContactNumber.text = getString(R.string.dual_string_value_placeholder)
}
Затем при нажатии кнопки я показываю пользовательскийдиалог для выполнения какого-либо действия.Когда диалог отклонен Я обновляю тот же textView в действии с данными, отправленными из диалога, но представление tvContact выдает нулевое исключение.
Активность onClick
override fun onClick(p0: View?) {
when (p0?.id) {
R.id.ivEdit -> {
object : ChangeNumberDialog(this) {
override fun onSubmitClicked(number: String) {
tvContactNumber.text =number
}
}.show()
}
}
}
onSubmitClicked - это абстрактный метод в диалоге, который запускается при закрытии диалога.
Ошибка из logcat:
java.lang.IllegalStateException: tvContactNumber must not be null
at com.beat.em.ui.activities.OTPVerificationActivity$onClick$1.onSubmitClicked
(OTPVerificationActivity.kt:211)
onCreate и onClick методы из ChangeNumberDialog :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val view = layoutInflater.inflate(R.layout.dialog_change_number, null, false)
setContentView(view)
setCanceledOnTouchOutside(false)
setCancelable(true)
tvSubmit.setOnClickListener(this)
}
override fun onClick(view: View) {
when (view.id) {
R.id.tvSubmit -> {
onSubmitClicked(etNumber.text.toString().trim())
dismiss()
}
}
}
Я только начал использовать расширение kotlin и не смог понять причину.Помощь оценена.