Unresolved reference: synthetic AndroidAndroid Studiokotlin-android-extensions

Posted guangdeshishe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unresolved reference: synthetic AndroidAndroid Studiokotlin-android-extensions相关的知识,希望对你有一定的参考价值。

问题描述

今天编译旧的android项目发现编译时报错了:

e: xxx...\\LoginActivity.kt: (14, 24): Unresolved reference: synthetic

对应报错源码地方:

import kotlinx.android.synthetic.main.activity_login.*

居然找不到kotlinx.android.synthetic这个类了,又看了下kotlin扩展包下面确实没这个类了

分析原因

网上找了一圈基本都是教我们怎么使用,让我们导入'kotlin-android-extensions'插件;后来才发现原来是kotlin-android-extensions这个插件已经过时了,之前还只是警告,现在完全不能用了,Google推荐我们使用View Binding

解决办法

  1. build.gradle文件中删除kotlin-android-extensions插件
  2. build.gradle文件中启用View Binder功能
    plugins 
        id 'org.jetbrains.kotlin.android'
    
    
    android 
        buildFeatures 
            viewBinding true
        
    
    
  3. 在Activity中使用,通过布局文件生成的Binding去引用该布局下的所有变量
    class LoginActivity : AppCompatActivity() 
    	这个类是根据布局文件生成的,对应的是R.layout.activity_login
        private lateinit var mLoginBinding: ActivityLoginBinding
    
        override fun onCreate(savedInstanceState: Bundle?) 
            super.onCreate(savedInstanceState)
    
            mLoginBinding = ActivityLoginBinding.inflate(getLayoutInflater());
            setContentView(mLoginBinding.root)//设置布局文件
            
            mLoginBinding.mUserName.addTextChangedListener 
                ...
            
    	
    
    

以上是关于Unresolved reference: synthetic AndroidAndroid Studiokotlin-android-extensions的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin的编译提示:Unresolved reference: xxx

解决pycharm无法导入本地包的问题(Unresolved reference 'tutorial')

Unresolved reference: viewmodel compose 省略viewModel

pycharm解决Unresolved Reference

解决Pycharm无法导入包问题 Unresolved reference

pycharm Unresolved reference 无法引入包