1

我正在更新活动的 onCreate 方法中的视图,该方法使用 kotlin 扩展工作正常,如下所述。

Activity 的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抛出空异常。

Activity的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)

ChangeNumberDialog中的onCreateonClick方法:

 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 扩展并且无法理解原因。帮助表示赞赏。

4

1 回答 1

2

您尝试访问的变量在另一个范围内,尝试向视图添加显式范围,即

this@YourActivity.tvContactNumber.text = number
于 2019-02-28T13:50:35.450 回答