Could not find method certificateClick(View) in a parent or ancestor Context for android:onClick ...

问题:在给View设置点击事件的时候报错,具体如下:

java.lang.IllegalStateException: Could not find method certificateClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class androidx.appcompat.widget.AppCompatImageView with id 'iv_certificate_request_scan'
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:424)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:381)
        at android.view.View.performClick(View.java:7260)
        at android.view.View.performClickInternal(View.java:7222)
        at android.view.View.access$3800(View.java:825)
        at android.view.View$PerformClick.run(View.java:27725)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:227)

我在代码中是使用onClick绑定代码中的点击事件

<ImageView
            android:id="@+id/iv_certificate_request_scan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="certificateClick"
            android:paddingLeft="@dimen/es_pitch5"
            android:paddingTop="@dimen/es_pitch12"
            android:paddingRight="@dimen/es_pitch12"
            android:paddingBottom="@dimen/es_pitch12"
            android:src="@mipmap/icon_scan_gray"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

代码中的监听事件

private fun certificateClick(view: View){
        when(view.id){
            //扫描编号
            R.id.iv_certificate_request_scan -> {
                openCapture(true)
            }
            //选择门店
            R.id.chl_certificate_request_store -> {
                MDRouters.Builder().build(RouterTable.ENDORSE_SELECT_STORE).requestCode(SELECT_STORE).create(this).go()
            }
            //提交
            R.id.btn_certificate_request_submit -> {

            }
        }
    }

然后发现代码中的点击事件函数名是灰色的==,没有被使用的,所以看到这里使用了private关键字,把private去掉,就看到函数名变成黄色,说明已经被使用了,结果一运行确实可以

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容