• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unresolved reference: synthetic AndroidAndroid Studiokotlin-android-extensions

武飞扬头像
guangdeshishe
帮助1

问题描述

今天编译旧的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 {
                ...
            }
    	}
    }
    

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfeaaah
系列文章
更多 icon
同类精品
更多 icon
继续加载