activity 中的 Kotlin 合成视图在显示和关闭自定义对话框时变为空
Kotlin synthetic view in activity gets null when a custom dialog is shown and dismissed
我正在更新 activity 的 onCreate 方法中的视图,该方法使用 kotlin 扩展正常工作,如下所述。
Activity's 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)
}
然后单击 按钮 我将显示一个 自定义对话框 以执行某些操作。当对话框 dismissed 时,我使用从对话框发送的数据更新 activity 中相同的 textView,但是视图 tvContact 抛出空异常。
Activity's 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 是对话框中的抽象方法,当对话框关闭时触发。
Error from logcat :
java.lang.IllegalStateException: tvContactNumber must not be null
at com.beat.em.ui.activities.OTPVerificationActivity$onClick.onSubmitClicked
(OTPVerificationActivity.kt:211)
onCreate and onClick methods from the 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 扩展,无法理解原因。帮助表示赞赏。
您尝试访问的变量在另一个范围内,请尝试向视图添加显式范围,即
this@YourActivity.tvContactNumber.text = number
我正在更新 activity 的 onCreate 方法中的视图,该方法使用 kotlin 扩展正常工作,如下所述。
Activity's 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)
}
然后单击 按钮 我将显示一个 自定义对话框 以执行某些操作。当对话框 dismissed 时,我使用从对话框发送的数据更新 activity 中相同的 textView,但是视图 tvContact 抛出空异常。
Activity's 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 是对话框中的抽象方法,当对话框关闭时触发。
Error from logcat :
java.lang.IllegalStateException: tvContactNumber must not be null
at com.beat.em.ui.activities.OTPVerificationActivity$onClick.onSubmitClicked
(OTPVerificationActivity.kt:211)
onCreate and onClick methods from the 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 扩展,无法理解原因。帮助表示赞赏。
您尝试访问的变量在另一个范围内,请尝试向视图添加显式范围,即
this@YourActivity.tvContactNumber.text = number