答案 0 :(得分:4)
检查“ build.gradle(:app)”文件,
plugins {
id 'com.android.application'
id 'kotlin-android'}
如果缺少kotlin扩展名,请添加“ kotlin-android-extensions”,如下所示,然后单击“立即同步”
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions' }
答案 1 :(得分:3)
以下是分步回答:
Gradle
Open Gradle Config
plugins
部分打开新的源代码,然后添加:id 'kotlin-android-extensions'
sync
结果:现在您可以导入kotlinx.android.synthetic.main.activity_main.*
答案 2 :(得分:2)
您可以尝试
OR 只需删除apply plugin: 'kotlin-android-extensions'
,同步gradle插件,然后我再次添加即可。
答案 3 :(得分:1)
简单的朋友,您忘记了星号。
import kotlinx.android.synthetic.main.activity_main.*
这只是发生在我身上。
答案 4 :(得分:1)
在 build.gradle (:app)
中,添加:
buildFeatures {
viewBinding true
}
在MainActivity
中:
private lateinit var binding: ActivityMainBinding
修改onCreate
:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setListeners()
}
设置监听器:
/**
* Attaches listeners to all the views.
*/
private fun setListeners() {
val clickableViews: List<View> =
listOf(
binding.view1,
binding.view2,
// ...
)
for (item in clickableViews) {
item.setOnClickListener { ... }
}
}
答案 5 :(得分:0)
module gradle
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
dependencies {
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
project gradle
buildscript{
ext.kotlin_version = '1.3.11'
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
答案 6 :(得分:0)
这对我来说是固定的:
<facet type="kotlin-language" name="Kotlin"> <configuration version="3" platform="JVM 1.8" allPlatforms="JVM [1.8]" useProjectSettings="false"> <compilerSettings /> <compilerArguments> <option name="jvmTarget" value="1.8" /> <option name="pluginOptions"> <array> <option value="plugin:org.jetbrains.kotlin.android:enabled=true" /> <option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" /> </array> </option> </compilerArguments> </configuration> </facet>
答案 7 :(得分:0)
对我来说,只是将apply plugin: 'kotlin-android-extensions'
添加到应用程序的build.gradle中,按同步gradle文件,我就可以得到合成
答案 8 :(得分:0)
id 'kotlin-android-extensions'
id 'kotlin-android'
删除插件,并向其中添加了两个。 id'kotlin-android-extensions' id'kotlin-android'
应添加。重新启动项目。
所以我发现问题出在gradle插件中,然后您需要重新启动并重建项目。
答案 9 :(得分:0)
合成技术现已从Google弃用。尝试避免使用它们,因为这可能会导致空指针异常和应用程序上的意外行为。
了解更多信息:
Migrate from Kotlin synthetics to Jetpack view binding来自官方开发者网站。
答案 10 :(得分:0)
希望这有帮助...可能与从布局中获取视图的新方法有关
科特林:
打开 gradle app.module 并在里面添加这一行
安卓{
android{viewBinding.enabled = true
...
}
(然后同步)
覆盖 fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater) // 2.1
setContentView(binding.root) // 2.2 而不是 (R.layout.activity_main)
现在视图是这样调用的
binding.btn1.setOnClickListener{...}
或
binding.txtviewTitle.text = "Welcome to the jungle" // or any R.string
注意:将 gradle module.app 与该行同步后,您会发现任何具有相同名称+绑定的活动
看2.1参考
答案 11 :(得分:0)
Kotlin Android 扩展已折旧。迁移到 Jetpack 视图绑定。见下文: https://developer.android.com/topic/libraries/view-binding/migration